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.