need script

George Toft plug-discuss@lists.PLUG.phoenix.az.us
Wed, 25 Apr 2001 08:52:13 -0700


You'll have to enclose $FILE in quotes in the mv command,
otherwise you'll get something like this:\
FILE <- Some File
LOWER <- some_file
mv Some File some_file   (which will blow up)

Try:
mv "$FILE" $LOWER


I verified this as shown:
[georgetoft@biff tmp]$ ls -l
total 0
-rw-r--r--    1 georgeto georgeto        0 Apr 25 08:49 Some File
[georgetoft@biff tmp]$ echo $FILE $LOWER
Some File some_file
[georgetoft@biff tmp]$ mv $FILE $LOWER
mv: when moving multiple files, last argument must be a directory
[georgetoft@biff tmp]$ mv "$FILE" $LOWER
[georgetoft@biff tmp]$ ls -l
total 0
-rw-r--r--    1 georgeto georgeto        0 Apr 25 08:49 some_file
[georgetoft@biff tmp]$

George



Kurt Granroth wrote:

> meg@cs.csoft.net wrote:
> 
>> Certainly someone must have a script (preferably Perl)
>> laying around somewhere that will:
>> 
>> Recurse thru directories and rename files by replacing
>> any UPPER case characters with lower and replacing spaces
>> in the file names with something like underscores.
> 
>  
> Off the top of my head, this might work:
> 
>  #!/bin/sh
>  FILES=`find -type f`;
>  for FILE in $FILES;
>  do
>    LOWER=`echo $FILE | tr 'A-Z ' a-z_`;
>    mv $FILE $LOWER;
>  done
> 
> Not tested and won't work if your directories have upper case letters
> or spaces.