← Back to team overview

sslug-teknik team mailing list archive

Re: Konvertering af filnavne til lowercase

 

Bent Bagger skrev:
> On 2010-05-05 19:24, David Bo Jensen wrote:
>> Jeg har i en direktorie struktur ca 70 filer som står med store bogstaver.
>> Hvordan konverterer jeg alle filerne recursivt til lowercase 


> Du kører følgende script:
> 
> #!/bin/sh
> # lowerit
> # convert all file names in the current directory to lower case
> # only operates on plain files--does not change the name of directories
> # will ask for verification before overwriting an existing file
> for x in `ls`
>   do
>   if [ ! -f $x ]; then
>     continue
>     fi
>   lc=`echo $x  | tr '[A-Z]' '[a-z]'`
>   if [ $lc != $x ]; then
>     mv -i $x $lc
>   fi
>   done
> 
> Mvh  Bent
> 
> 

OBS. Den virker kun for filnavne uden blanktegn i navnet...!

alternativer :

1) virker med blanktegn, og er simpel:
  rename 'y/A-ZÆØÅ/a-zæøå/'   *

2) også fejl med spaces / blanktegn ,
 "for" løkke er svært at få til at virke med blanktegn:

  for f in  $(find . -type f ) ; do
     new=$( echo "$f" | tr '[A-Z]' '[a-z]' );
     echo mv "$f" "$new"; # fjern "echo" når det er kontrolleret det virker
  done


3) virker med blanktegn, der bruges "read" :

 find . -type f -print | while read f ; do
  new=$( echo "$f" | tr '[A-Z]' '[a-z]' );
  echo mv "$f" "$new"   #  fjern "echo" når det er kontrolleret det virker
 done


OBS ovenstående er kun med ASCII96, ikke danske tegn mfl.
tilføje selv andre tegn til listen i ovenstående:
 f.eks:   [A-ZÆØÅÄÖ] [a-zæøåäö]


Follow ups

References