On Fri, Apr 23, 2010 at 1:25 PM, S Alex <[email protected]> wrote:
> Hi All,
>
>
> Plz tell me what will the below script does.
>
> /var/log/ -name '*.log' -type f -size +64k -exec cp {} /home && dd
> if=/dev/null of='{}'
You left out find I guess.
$ find /var/log -name *.log -type f -size +64k
translates to this in English:
Find the files recursively under /var/log directory of name "*.log"
and of type file(-type f).
We also put another condition that their size should be more than 64 kilobytes.
Until this point it is clear.
now the remaining part.
-exec cp {} /home/
translates to
copy the files that match these criteria to /home.
{} stands for find results.
&& is used in shell to give one command after another in such a way
that the following command
will run only if the previous command returned success.
dd if=/dev/null of={} will truncate a given file to zero bytes. So in
this case, we are truncating all
found files to be of zero bytes length.
Now I would write the same thing like this.
$ find /var/log -name "*.log" -type f -size +64k | xargs -J ^ cp ^ /home
Somehow dd does not take more than one argument for of=.
So it has to be done in a loop.
Something like this would work.
$ find /var/log/ -type f -name "*.log" -size +64k > /tmp/files
$ for f in `cat /tmp/files`
do
dd if=/dev/null of=$f
done
-Girish
--
Gayatri Hitech
web: http://gayatri-hitech.com
SpamCheetah Spam filter:
http://spam-cheetah.com
_______________________________________________
ILUGC Mailing List:
http://www.ae.iitm.ac.in/mailman/listinfo/ilugc