View previous topic :: View next topic |
Author |
Message |
3PO Veteran


Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Fri Dec 27, 2013 2:35 pm Post subject: Dateien finden und umbennen? |
|
|
Hallo Zusammen,
Ich habe ein kleines Problem mit dem Umbenennen von Dateien.
Ich habe ein Verzeichnis mit Unterverzeichnissen, in dem Dateien sind, die mit einen Tilde enden, z.b. so.
12foo.abc~
15foo.abc~
xyz12.cba~
Ich suche nun eine Möglichkeit, in einem Rusch, die Dateien zu finden, und das Tilde am ende zu entfernen.
Leider aber fehlt mir gerade der Ansatz, aber vlt. hat ja Jemand eine Idee?  |
|
Back to top |
|
 |
firefly Watchman

Joined: 31 Oct 2002 Posts: 5340
|
Posted: Fri Dec 27, 2013 3:41 pm Post subject: |
|
|
so stichwörter:
- find
- for loop
- sed
daraus habe ich das gemacht, ist bestimmt nicht die beste variante:
Code: | for x in $(find -type f -iname "*~"); do mv $x $(echo $x | sed 's/~//g'); done |
_________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
 |
Finswimmer Bodhisattva


Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Fri Dec 27, 2013 3:46 pm Post subject: |
|
|
Code: | for i in "$(find|grep \~$)" ; do temp=$(echo "$i" | sed s'#\~##'g ); mv "$i" "$temp"; done |
Verdammt. Zu langsam
Dafür berücksichtigt meine Variante Leerzeichen im Dateinamen: Man muss alle Variablen in " " setzen.
Viele Grüße
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
 |
3PO Veteran


Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Fri Dec 27, 2013 4:24 pm Post subject: |
|
|
THX erstmal!!
Leider gibt es da ein kleines Problem:
Die Lösung von firefly funktioniert, leider aber nicht mit Verzeichnissen und Files mit Leerzeichen.
Die Lösung von Finswimmer geht leider überhaut nicht:
Code: | serv03 Old School # for i in "$(find|grep \~$)" ; do temp=$(echo "$i" | sed s'#\~##'g ); mv "$i" "$temp"; done
mv: der Aufruf von stat für „./cover/oldschool_back.jpg~\n./cover/oldschool_front.jpg~\n./Bikes_01_1080p.mp4~\n./Bikes_02_1080p.mp4~\n./Bikes_03_1080p.mp4~\n./Bikes_04_1080p.mp4~\n./Bikes_05_1080p.mp4~\n./iak-old.school.nfo~“ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
serv03 Old School # serv03 Old School # for i in "$(find|grep \~$)" ; do temp=$(echo "$i" | sed s'#\~##'g ); mv "$i" "$temp"; done
mv: der Aufruf von stat für „./cover/oldschool_back.jpg~\n./cover/oldschool_front.jpg~\n./Bikes_01_1080p.mp4~\n./Bikes_02_1080p.mp4~\n./Bikes_03_1080p.mp4~\n./Bikes_04_1080p.mp4~\n./Bikes_05_1080p.mp4~\n./iak-old.school.nfo~“ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
serv03 Old School # |
|
|
Back to top |
|
 |
firefly Watchman

Joined: 31 Oct 2002 Posts: 5340
|
Posted: Fri Dec 27, 2013 4:26 pm Post subject: |
|
|
Finswimmer wrote: | Code: | for i in "$(find|grep \~$)" ; do temp=$(echo "$i" | sed s'#\~##'g ); mv "$i" "$temp"; done |
Verdammt. Zu langsam
Dafür berücksichtigt meine Variante Leerzeichen im Dateinamen: Man muss alle Variablen in " " setzen.
Viele Grüße
Tobi |
funktioniert so auch nicht mit den leerzeichen. Zu mindestens nicht mit der bash, da die for loop standardmäßig den eingabe string anhand von whitespaces trennt.
Entweder man setzt die IFS variable temporär auf nur new lines oder verwendet eine while loop mit read:
Code: | find -type f -iname "*~" | while read line; do temp=$(echo $line | sed 's/~//g'); mv "${line}" "$temp"; done |
_________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
 |
firefly Watchman

Joined: 31 Oct 2002 Posts: 5340
|
Posted: Fri Dec 27, 2013 4:29 pm Post subject: |
|
|
3PO wrote: | THX erstmal!!
Leider gibt es da ein kleines Problem:
Die Lösung von firefly funktioniert, leider aber nicht mit Verzeichnissen und Files mit Leerzeichen. |
Ist korrigiert siehe meinen post vor diesem _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
 |
3PO Veteran


Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Fri Dec 27, 2013 4:49 pm Post subject: |
|
|
firefly wrote: | Ist korrigiert siehe meinen post vor diesem |
Vielen Dank nochmals!
Hat funktioniert!
Das hat mir einige Stunden Arbeit erspart. |
|
Back to top |
|
 |
|