Shellscript: Dateiendung anhängen
-
Hab noch das gefunden:
find "dir" -type f -print | while read f; do n="\`dirname \\"f\"`/`basename \"f\\" | sed 's/ /_/g'\`" if test -e "n"; then
echo "Ziel \"n\\" existiert" >&2 else mv "f" "$n"
fi
doneSagt mir aber dann: find: invalid predicate `'
PS: Geklaut von: http://www.jan-trippler.de/quickies/files.html
-
pasti schrieb:
Ok hab das ganze gerade an den Orginaldaten ausprobiert. Das Problem ist jetzt nur, dass ganz vieeele Leerzeichen und Punkte in den Dateinamen sind . Die kanne das Script jetzt natürlich nicht verarbeiten. Gibts da irgend eine Lösung?
Danke
Das kann man wirklich als Buch rausbringen. Köstlich
Die Leerzeichen kann man ja auch ersetzen, jetzt wird's lustig:#!/bin/bash for i in `find $1/* -type f`; do realname=`echo $i | sed "s/ /\\ /"` mv $realname $realname.$2 done;
Ungeprüft, kann das mal jemand vereinfachen!
Evtl. mit Xargs
-
ºgrimmsenº schrieb:
#!/bin/bash for i in `find $1/* -type f`; do
Peng, genau hier liegt der Fehler.
Stell Dir mal vor $1 ist foo und in foo liegt eine Datei namens "baz bar" (mit Leerzeichen).
Was wird dann die Bash wohl (in Ermangelung eines echten Array-Typs) machen?
Genau! foo/baz und bar getrennt bearbeiten.
-
So, einmal will ich aber auch noch
#!/bin/bash
find "$1"/* -type f -exec mv '{}' \{\}.$2 \;
-
Logisch... Denkfehler meinerseits
Wie wäre das:#!/bin/bash for i in `find $1/* -type f | sed "s/ /\\/g"`; do realname=`echo $i | sed "s/\\/\\ /g"` mv $realname $realname.$2 done;
Mmmh... müßte funzen, oder pasti
-
Und nachdem ich mir das ganze hier nicht länger ansehen kann:
Probier mal sowas:#!/bin/bash find "$1" -type f -exec mv '{}' \{\}.$2 \;
-
ºgrimmsenº schrieb:
Wie wäre das:
#!/bin/bash for i in `find $1/* -type f | sed "s/ /\\/g"`; do
Schlecht, probiers aus.
-
Hab mich ja schon entschuldigt...
-
ºgrimmsenº schrieb:
Hab mich ja schon entschuldigt...
Wofür denn, ich hab Dich ja eh ausgebessert.
-
Ich liebe for-Schleifen ... Aber wer benutzt eigentlich Leerzeichen bei Dateinamen? Ihhh...
In der Shell leidet dann immer mein tab-Taste...[geschlossen]
-
Auso ihr beide, es scheinen beide Lösungen zu funktionieren, kann aber den Reallife erst morgen in der Firma machen.
Aber wer benutzt eigentlich Leerzeichen bei Dateinamen? Ihhh...
Na wer wohl?
Unsere GrafikerINNEN haben ihre 10000 Bilder in der Form
/Artikel 43735435.1684348/Spezieller Katalog/12.48.5874/ab Nummer 458.18/Bild
abgespeichert.
Ohne Endung und jetzt frisst die neue Grafiksoftware die Bilder nicht mehr. Eigentlich hätte ich auch sagen können, sie müssen nun alle Bilder von Hand umbenennen, das hätte gegeben. Dafür wäre der Lerneffekt grandios gewesen . Aber so fies kann man fast nicht sein, oder
-
pasti schrieb:
Aber so fies kann man fast nicht sein, oder
Du hast den BOFH noch nicht gelesen, oder?
Hol das bei Gelegenheit nach!
-
Nochmals vielen Dank an alle! Ihr habt einigen Elementen userer Gesellschaft das Umbennennen tausender Dateien erspart. Nun ja, ich hätte ja nicht dazugehört :p