advanced-bash-techniques

advanced-bash-techniques

advanced bash techniques

find and change all files

.. code-block:: bash

sudo find . -type f -print0 | xargs -0 ls -hal

sudo find . -type f -print0 | xargs -0 sudo chown www-data:www-data

sudo find . -type f -print0 | xargs -0 sudo chmod 0644

find and change all directories:

sudo find . -type d -print0 | xargs -0 sudo chmod 0775

Remove a particular line from all files in a directory

.. code-block:: bash

for file in /tmp/test/* do cp -p $file $file.tmp egrep -v “RegexToRemove” $file.tmp > $file rm -rf $file.tmp done

apache logs count unique ip addresses

.. code-block:: bash

sudo cat access.log | awk ‘{ print $1; }’ | sort | uniq -c | sort -n

Bash Perl search and replace multiple files one liner

.. code-block:: perl

perl -pi -w -e ‘s/search/replace/g;’ *.extension

explanation:

-e means execute the following line of code.

-i means edit in-place

-w write warnings

-p loop

Bash sed search and replace multiple files one liner

.. code-block:: sed

sed -i’’ -e ‘s/search/replace/g’ *

Get a coma separated list of libvirt guests

.. code-block:: bash

virsh list | egrep -v ‘Domain|Name|—-|^$’ | awk ‘{printf “%s,” , $2}’ > /tmp/virthosts