Die nächste Frage ist bestimmt einfacher
Ich würde gern rekursiv in allen Datei - und Ordnernamen "-" durch "." ersetzen.
#!/bin/sh
find /volume1/mein/Verzeichnis -name "*-*" -exec rename 's/-/./g' '{}' \;
Ergebnis find: rename: no such file or directory
Ein
find /volume1/mein/Verzeichnis -name "*-*" liefert zumindest mal alle Treffer, nur die
Übergabe an rename, da haperts.
Edit: hab was gefunden und zusammengebastelt, das funktioniert (allerdings kommen ein paar Fehlermeldungen, trotz korrekter Umsetzung - ich glaub move mag es nicht, wenn eine Bedingung auf den Ordner und das/die darin liegende
file(s) zutrifft
Edit: ist ja logisch! Es wird gesucht, dann der Ordner umbenannt und jetzt trifft der zuvor gefundene Pfad, zum Ändern der Datei nicht mehr zu, da umbenannt ... richtig wäre also erst einmal die Dateien -type f zu suchen und umzubenennen, dann die Ordner -type d
#!/bin/sh
find /volume1/mein/Verzeichnis/ -name "*-*" -print | while read file
do
new=`echo "$file" | sed 's/-/./g'`
mv "$file" "$new"
done
Zu meinem obigen Erklärungsversuch, eigentlich sollte doch zuerst -type f abgearbeitet werden und dann -type -d, aber ich muss für korrekte Ergebnisse das Script zweimal laufen lassen (wenn eine Datei und ein Verzeichnis
- im Namen enthalten ?
Wäre es eine Lösung, zuerst -type f abzuarbeiten und dann den Zweiten Befehl in ein separates Script zu stecken, welches durch ersteres aufgerufen wird?
Edit: nö, leider nicht
#!/bin/sh
# search for files
find /volume1/mein/Verzeichnis/ -type f -name "*-*" -print | while read file
do
new=`echo "$file" | sed 's/-/./g'`
mv "$file" "$new"
done
# search for folders
find /volume1/mein/Verzeichnis/ -type d -name "*-*" -print | while read file
do
new=`echo "$file" | sed 's/-/./g'`
mv "$file" "$new"
done
itari schrieb:
Hinweis zu Tools wie 'find'. Stell dir vor, 100.000 Leute hätten sich ihr eigenes Word unter Windows geschrieben, alle ein wenig anders, aber sie bezeichnen es alle als 'Word' und du musst jedesmal ausprobieren, was dein Word kann oder auch nicht. Du hast aber immer die Möglichkeit, dir ein anderes Word (zusätzlich) zu installieren oder dir ein eigenes zu schreiben. Verrückte Sache, nicht?
Aber genauso ist es bei Linux/Unix der Fall.
BINGO
hätte meine vorherigen Fragen ebenso mit diesem Script lösen können. Aller Anfang ist schwer, aber mit kleinen Schritten gehts voran ...
Gruß
Edit: Groß- und Kleinschreibung gelöst. Langsam fang ich an zu jubeln
#!/bin/sh
# search for files
find /volume1/mein/Verzeichnis/ -type f -iname "*urlaub-*" -print | while read file
do
new=`echo "$file" | sed 's/[Uu][Rr][Ll][Aa][Uu][Bb]-//g'`
mv "$file" "$new"
done