Hallo Leute, ist es möglich alle in einem Ordner liegenden Datein durchzunummerieren? In etwa so: Ordner a: Datei a bis ? soll zu Test 1 bis ? geändert werden lässt sich das so einfach machen? oder muss man da ein Script schreiben? Hat vielleicht schon so ein Script mal gemacht, dass er mir zur Verfügung stellen würde? Danke schon mal im Vorraus Mike
Am Sonntag, 29. Dezember 2002 17.06 schrieb Michael Messner:
ist es möglich alle in einem Ordner liegenden Datein durchzunummerieren? Ordner a: Datei a bis ? soll zu Test 1 bis ? geändert werden
Hallo Michael, da ist ein Script angebracht. Es sieht etwa folgendermassen aus. Den Space im Filename habe ich durch ein _ ersetzt. #!/bin/sh cnt=1 for f in *; do mv $f Test_$cnt cnt=`expr $cnt + 1` done -- Viele Grüsse Urs Schaffner
Am Sonntag, 29. Dezember 2002 17:06:17 schrieb Michael Messner:
ist es möglich alle in einem Ordner liegenden Datein durchzunummerieren? In etwa so: Ordner a: Datei a bis ? soll zu Test 1 bis ? geändert werden
Ein Einzeiler in der Bash tut es: n=1;for file in *; do mv "$file" "Test $n";let n=$n+1;done Der macht aber keinerlei Fehlererkennung, d. h., wenn du komische Dateinamen benutzt, oder es schon Test*-Dateien gibt, sind die u. U. anschließen wech. Martin -- when in danger or in doubt, run in circles, scream and shout! pgp-key: via wwwkeys.de.pgp.net, key id is 0x21eec9b0
Martin Borchert wrote:
Am Sonntag, 29. Dezember 2002 17:06:17 schrieb Michael Messner:
Ordner a: Datei a bis ? soll zu Test 1 bis ? geändert werden
Ein Einzeiler in der Bash tut es:
n=1;for file in *; do mv "$file" "Test $n";let n=$n+1;done
Der macht aber keinerlei Fehlererkennung, d. h., wenn du komische Dateinamen benutzt, oder es schon Test*-Dateien gibt, sind die u. U. anschließen wech.
Eine einfache Ergänzung wäre die Option -i für mv, dann werden zumindest etwaige schon bestehende Dateien mit Namen der Form "Test x" nur nach Rückfrage ersetzt. Für den Fall, daß Dateinamen vorkommen, die mit einem Bindestrich anfangen, kann vor dem ersten Dateinamen beim mv-Aufruf noch das Argument "--" eingefügt werden, um zu verhindern, daß ein solcher Dateiname als Option interpretiert wird, also so: ...; do mv -i -- "$file" "Test $n"; ... Wenn mit Leerzeichen (oder allgemeiner: mit "Whitespace", also auch Tabulatorzeichen, Zeilenumbrüchen etc.) in Dateinamen gerechnet werden muß, ist die "for file in *"-Konstruktion allerdings nicht geeignet. (Einer der Gründe, warum ich Leerzeichen in Dateinamen möglichst vermeide.) Auf das Vorhandensein solcher Dateien sollte man also vorher unbedingt achten. Ansonsten sollten bei der Konstruktion eigentlich keine "schwereren Fehler" (sprich: Dateiverluste) auftreten -- schlimmstenfalls werden (z.B. wegen fehlender Zugriffsrechte) einige Dateien nicht umbenannt und bestehen unter ihrem alten Namen weiter, aber das kann man ja anschließend leicht kontrollieren. Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org http://www.informatik.uni-bremen.de/~eilert/
participants (4)
-
Eilert Brinkmann
-
Martin Borchert
-
Michael Messner
-
Urs Schaffner