ubuntuusers.de

dateien in unterverzeichnissen umbenennen

Status: Ungelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

krischeu

Anmeldungsdatum:
9. März 2007

Beiträge: 50

Wohnort: Kahl

Hi, ich hab ein paar hundert Dateien mit der Endung .png~ .jpg~ .zip~ und so weiter. Die sind in diversen Verzeichnissen und Unterverzeichnissen. Gibt es eine gute Möglichkeit das mit einem kleinen Shellscript wieder richtig hinzubiegen? –> Quasi als .png .zip und .jpg? mit find . -name ".???~" finde ich zwar alle Files die ich ändern will aber bei mv müßte ich dann irgendwie die Variable dazu bringen das letzte Zeichen (~) zu löschen.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Klar gibt es eine gute Standard-Möglichkeit: mit find und rename, schon 758 Mal hier auf dem Forum erklärt.
(zuletzt z.B. hier: http://forum.ubuntuusers.de/topic/jpg-automatisch-klein-beim-einstecken-von-memoryca/ )

Bei Dir wäre es also in jedem Verzeichnis ± sowas:

rename 's/~$//' *~

(→ man find und man rename )

LG,

track

Keba Team-Icon

Ehemalige
Avatar von Keba

Anmeldungsdatum:
24. Juli 2007

Beiträge: 3802

Hallo,

Oder wenns rekursiv sein soll:

1
find . -name "*~" -exec rename 's/~$//' {} \;

Grüße, Keba.

krischeu

(Themenstarter)

Anmeldungsdatum:
9. März 2007

Beiträge: 50

Wohnort: Kahl

Hi, solved - ohne perlerweiterung "rename"

find . -type f 2> /dev/null | grep '.*~$' | while read line ; do
echo $line >> /share/tildelog.txt
newname=`echo $line | sed  's/\~//g' | sed 's/ /\\ /g' `
mv "$line" "$newname"
done

Bearbeitet von barabbas:

Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Das mag mal funktionieren ... aber wehe, da ist in einem Dateinamen ein Leerzeichen, ein Zeilenvorschub oder sonst ein bösartiges Sonderzeichen drin !
Dann funktioniert die Variante nicht mehr. (und Du hast ja noch nicht einmal korrekt "gequotet" ...) - Die Standard-Version ist dagegen immun.

Oder Du müsstest mit einer Null-terminierten Liste arbeiten, das wäre auch sicher. (→ http://mywiki.wooledge.org/BashGuide/Practices#Quotingcontext=180& )
Lies besser nochmal die verlinkten man-pages durch !

LG,

track

Antworten |