On Fri, Apr 23, 2010 at 1:25 PM, S Alex <alexbe....@gmail.com> 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

Reply via email to