Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Leerzeichen aus dateinamen entfernen



meinereinerseiner
28-05-2001, 13:38
Hallo,
für mein fotoalbum muss ich die bilddateien umbennen. das ausgangsformat ist dabei unbekannt (leerzeichen, klammern, was windows so hergibt *g*)

nun will ich diese per skript umbennen, so das sie lediglich fortlaufend nuemeriert werden.

mein ansatz:

#!/bin/sh
#
dat=`ls -1`
zahl=1

for i in $dat; do
mv "$dat" nach $zahl.jpg
i=`expr $zahl + 1`
done


ja, und das will nicht!


der tom

rbla
28-05-2001, 16:33
die shell experten werden wahrscheinlich ein lösung mit änderung der ifs variablen oder sowas finden, aber mit perl gehts glaube ich einfacher

opendir(DIR, $path);
@files = readdir(DIR);
$i=0;
foreach $file (@files) {
if (-f $path.$file) {
rename($path.$file, $path.$i.jpg);
$i++;
}
}
closedir(DIR);

kabalak
28-05-2001, 16:34
hm, der Ansatz ist doch gut; es sind aber einige typos/Denkfehler drin gewesen:

:
#!/bin/sh
filenames=`ls -1 -f *`
count=1

for i in $filenames
<TAB>do
<TAB><TAB>mv "$i" $count.jpg
<TAB><TAB>count=$[ $count + 1 ]
<TAB>done

exit 0

meinereinerseiner
28-05-2001, 17:27
Hallo,

die Shell variante geht leider nicht!

devil:~/entwicklung/Mixed # ls -al
total 532
drwxr-xr-x 2 funwg users 4096 May 28 18:07 .
drwxr-xr-x 4 root root 4096 May 28 18:07 ..
-rwx------ 1 funwg users 122 May 28 18:07 1.jpg
-rw-r--r-- 1 funwg users 44454 May 26 16:43 Jules Geburtstag 01 (02_1999).jpg
-rw-r--r-- 1 funwg users 46743 May 26 16:43 Jules Geburtstag 02 (02_1999).jpg
-rw-r--r-- 1 funwg users 46868 May 26 16:43 Jules Geburtstag 03 (02_1999).jpg
-rw-r--r-- 1 funwg users 40570 May 26 16:43 Jules Geburtstag 04 (02_1999).jpg
-rw-r--r-- 1 funwg users 36102 May 26 16:44 Jules Geburtstag 05 (02_1999).jpg
-rw-r--r-- 1 funwg users 37521 May 26 16:44 Jules Geburtstag 06 (02_1999).jpg
-rw-r--r-- 1 funwg users 49597 May 26 16:44 Jules Geburtstag 07 (02_1999).jpg
-rw-r--r-- 1 funwg users 42380 May 26 16:44 Jules Geburtstag 08 (02_1999).jpg
devil:~/entwicklung/Mixed # ./1.jpg
mv: `1.jpg' and `1.jpg' are the same file
mv: Jules: No such file or directory
mv: Geburtstag: No such file or directory
mv: 01: No such file or directory
mv: (02_1999).jpg: No such file or directory
mv: Jules: No such file or directory
mv: Geburtstag: No such file or directory
mv: 02: No such file or directory
mv: (02_1999).jpg: No such file or directory
mv: Jules: No such file or directory
mv: Geburtstag: No such file or directory
mv: 03: No such file or directory
mv: (02_1999).jpg: No such file or directory
mv: Jules: No such file or directory
mv: Geburtstag: No such file or directory
mv: 04: No such file or directory
mv: (02_1999).jpg: No such file or directory
mv: Jules: No such file or directory
mv: Geburtstag: No such file or directory
mv: 05: No such file or directory
mv: (02_1999).jpg: No such file or directory
mv: Jules: No such file or directory
mv: Geburtstag: No such file or directory
mv: 06: No such file or directory
mv: (02_1999).jpg: No such file or directory

und das perlscript sagt und tut leider auch nix. :-(

wo liegt der Fehler?

der tom

rbla
28-05-2001, 18:08
du hast aber schon $path auf den pfad gesetzt, also z.b.
$path=`pwd`;

rbla
28-05-2001, 18:26
hab nochmal nachgedacht, geht auch einfach mit shell

count=0
for file in *; do
if test -f "$file"; then
mv "$file" $count.jpg
count=$[$count+1]
fi
done

mit ls funktioniert es definitv nur, wenn man denn IFS ändert
z.b.
IFS=\n
files=`ls -1`

aber so richtig blick ichs auch nicht, deswegen nehm ich lieber perl ;)

meinereinerseiner
28-05-2001, 18:53
Hi,

so, nun tut beides beim perlscript hatte ich was verquerches eingegeben und bei der shell variante war es der IFS.

jetzt tut es , DANKE!

der tom