[nflug] file name extensions

eric eric at bootz.us
Fri Nov 17 07:37:41 EST 2006


I have question :)


$ find /path -type f -exec mv {}{,.sxw} \;


in this command I was able to find out what everything was doing except
the comma inbetween { and .sxw
is it doing recursion?


Mark T. Valites wrote:

> On Thu, 16 Nov 2006, Robert Meyer wrote:
>
>> Not necessarily so.  I made that as a general case.  There are a
>> zillion ways to get a list of files into that command.  The
>> implementation was left as an exercise for the reader :-)
>>
>> Hmmm.. OK, guys.  How many ways are there to do this in Unix?  I'll
>> bet we can come up with at least five or six.  Take into account the
>> fact that there could be spaces in the files and we want to traverse
>> a directory, recurively.  You're allowed to use any shell you want,
>> including perl.  Points awarded for snarky, weird or just plain
>> bizarre methods.  It has to work properly.
>>
>> Here is my contribution:
>> #!/bin/bash
>> for name in `find $1 -type f`; do
>>   mv "$name" "${name}.sxw"
>> done
>
>
> No, the example above would be the perfect example for useless use of
> a for loop, regardless of how "generic" it was designed or how well it
> "recurively" traversed a directory. The for loop needlessly iterates
> over a list generated by find when find could do everything needed in
> one shot.
>
> It also could potentially suffer from a limit of the length of command
> the shell can handle.
>
> A simpler solution that explicitly lists the source and destination
> files names would be:
>
> $ find /path -type f -exec  mv {} {}.sxw \;
>
> Better yet:
>
> $ find /path -type f -exec mv {}{,.sxw} \;
>
> _______________________________________________
> nflug mailing list
> nflug at nflug.org
> http://www.nflug.org/mailman/listinfo/nflug


_______________________________________________
nflug mailing list
nflug at nflug.org
http://www.nflug.org/mailman/listinfo/nflug



More information about the nflug mailing list