Datum: 2004-05-13
Quelle: suse-linux
Für alle Dateien mit der Endung _s.jpg soll in einem Verzeichnisbaum die Endung auf .jpg umgesetzt werden. Es war nicht ganz klar, ob das case-insensitiv geschehen sollte, deshalb werden beide Fälle beschrieben.
# nur klein geschrieben / only lowercase find -name "*_s.jpg" -print | while read i; do mv -i "$i" "`dirname \"$i\"`/`basename \"$i\" _s.jpg`.jpg" done # alle Varianten / case insensitive find -iname "*_s.jpg" -print | while read i; do mv -i "$i" "`echo \"$i\" | sed 's/_s\.jpg$/.jpg/i'`" done # Schreibweise der Endung behalten / keep the original suffix find -iname "*_s.jpg" -print | while read i; do mv -i "$i" "`echo \"$i\" | sed 's/_[sS]\.\([jJ][pP][gG]\)$/.\1/'`" done
Die erste Schleife setzt den neuen Dateinamen aus dem Verzeichnis- und dem Namensanteil neu zusammen. Dabei wird ausgenutzt, dass basename als 2. Argument eine Endung aufnehmen kann, die dann abgeschnitten wird. Die anderen beiden Varianten suchen case-insensitiv (Option -iname) und nutzen zum Umbenennen den sed. Die dritte Version merkt sich die Originalendung (Teil nach dem Punkt) und hängt diese dann wieder an.