[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Unix-ify File Names



Jeff D <fixedored@gmail.com>:
>  On Tue, 17 Apr 2007, Masatran, R. Deepak wrote:
> > Since I frequently receive files from Microsoft Windows users, is there any
> > utility to unix-ify file names, that is, use lower case exclusively, use
> > hyphen as separator, etc.?
[...]
>  #!/bin/sh
>  #change spaces to hyphens
>  rename 's/\ /-/g' *$1
> 
>  #uppercase to lower
>  for FILE in `ls *$1` ; do

Please don't teach beginners to do for loops like this. It's broken in
various ways. Just do:

  for FILE in *"$1" ; do

>          filename=`basename $FILE`
>          newfile=`echo $filename | tr A-Z a-z`
>          if [ "$filename" != "$n" ] ; then
>                  mv $filename $newfile

Maybe adding '-i' to the mv call would be a good idea to avoid
accidentally overwriting existing files.

>                  fi
>  done
[...]

Regards, Frank

-- 
In protocol design, perfection has been reached not when there is
nothing left to add, but when there is nothing left to take away.
                                                  -- RFC 1925



Reply to: