sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #102431
RE: Omdøbning af mange filer
> 2012/6/28 Jens Bang <mailinglists@xxxxxxx>:
> > Jeg forstår ikek hvad du mener...
> >
> > Jeg skal bruge find i stedet for *?
> >
>
> ja command substitue find, hvis du bruger mellemrum i dine fil navne
> tror for det er et nyt argument. så pipe til tr fx
> for file in `find . | tr ' ' '_'`
>
> > Mht sed scriptet: Vil du rette direkte i filnavnet?
>
> Man kan ikke rename i unix kun move.
>
> > Eller lade sed scriptet generere en streng der indeholder det filnavn
> der skal renames
> > til og så bruge mv?
> >
> > -- Jens
>
> Hmm jeg vil arbejde med min for variable file fx
>
> mv $file `echo $file | sed 's/badchars/goodchars/g' | tr '_' ' '`
>
> Du kan samle flere sed kommandoer i en fil og køre dem samlet i
> stedet for at blive ved med at pipe til sed eller bruge noget regex
> hvis du har et logisk mønster.
>
> man lidt de forskellige kommandoer og din shell.
>
> -- Hilsen Andreas
>
Et lille script der håndterer det meste af det.
#!/bin/bash
#Start
convertillegalchar () {
tmpvar="${1//</_}"
tmpvar="${tmpvar//>/_}"
tmpvar="${tmpvar//\?/_}"
tmpvar="${tmpvar//\*/_}"
tmpvar="${tmpvar//:/_}"
echo "$tmpvar"
}
for file in $(find . -type f); do
newfilename="$(convertillegalchar "$file")"
if test "$file" != "$newfilename"; then
echo "$newfilename"
fi
done
#End
Her håndterer man flytning af fil incl. fejlkoder osv. inde i if-konstruktion.
Filer i mappe TEST:
ls -x TEST
a<b>c?d*e: abc>.txt
Kørselsresultat:
./TEST/abc_.txt
./TEST/a_b_c_d_e_
Med venlig hilsen / Regards
Frank Larsen
Kimik IT A/S
PO Box 740
3900 Nuuk
Greenland
Mail : support@xxxxxxxxxxx
Phone: +299 34 20 00
References