Hallo Zusammen, Folgendes Problem: Ich habe hier einige hundert (automatisch erzeugter) Dateien, deren Name sich aus einem Text und einer fortlaufenden Nummer zusammensetzt. Leider wurden die Nummern nicht mit führenden Nullen auf gleiche Länge gebracht. Je nach Programm folgt so der Daten xy-1.abc die Datei xy-10.abc und nicht etwa xy-2.abc. Wie kann ich die Dateien so umbenennen, dass aus xy-nm.abc xy-000nm.abc wird. Mit freundlichen Grüßen si -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 06.05.2013 um 08:22 schrieb Susan Ivanova
Folgendes Problem: Ich habe hier einige hundert (automatisch erzeugter) Dateien, deren Name sich aus einem Text und einer fortlaufenden Nummer zusammensetzt. Leider wurden die Nummern nicht mit führenden Nullen auf gleiche Länge gebracht. Je nach Programm folgt so der Daten xy-1.abc die Datei xy-10.abc und nicht etwa xy-2.abc. Wie kann ich die Dateien so umbenennen, dass aus xy-nm.abc xy-000nm.abc wird.
Ohne jetzt eine fertige Lösung auch nur annähernd zu haben: Du wirst die Dateinamen mit awk, perl oder so zerlegen und neu zusammensetzen müssen. Bei der Neubenamung dann ist printf(1) Deine FreundIn. printf "yz-%0.3d10.abc" zum Beispiel liefert dann yz-00010.abc zurück. HTH, Rainer-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 06.05.2013 08:40, schrieb Rainer Sokoll:
Am 06.05.2013 um 08:22 schrieb Susan Ivanova
: Folgendes Problem: Ich habe hier einige hundert (automatisch erzeugter) Dateien, deren Name sich aus einem Text und einer fortlaufenden Nummer zusammensetzt. Leider wurden die Nummern nicht mit führenden Nullen auf gleiche Länge gebracht. Je nach Programm folgt so der Daten xy-1.abc die Datei xy-10.abc und nicht etwa xy-2.abc. Wie kann ich die Dateien so umbenennen, dass aus xy-nm.abc xy-000nm.abc wird.
krename sollte das können Viele Grüße Andreas -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Return-Path:
X-Sieve: CMU Sieve 2.2 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on amadeus4.local X-Spam-Level: X-Spam-Status: No, score=-7.9 required=8.0 tests=AWL,RCVD_IN_DNSWL_HI, RDNS_NONE autolearn=ham version=3.2.5 X-Original-To: opensuse-de@lists4.opensuse.org Delivered-To: opensuse-de@lists4.opensuse.org Date: Mon, 6 May 2013 08:22:19 +0200 From: Susan Ivanova To: opensuse-de@opensuse.org Subject: Dateiname normalisieren X-Mailer: Claws Mail 3.8.1 (GTK+ 2.24.10; x86_64-suse-linux-gnu) Precedence: bulk Mailing-List: contact opensuse-de+help@opensuse.org; run by mlmmj X-Mailinglist: opensuse-de List-Post: mailto:opensuse-de@opensuse.org List-Help: mailto:opensuse-de+help@opensuse.org List-Subscribe: mailto:opensuse-de+subscribe@opensuse.org List-Unsubscribe: mailto:opensuse-de+unsubscribe@opensuse.org List-Owner: mailto:opensuse-de+owner@opensuse.org List-Archive: http://lists.opensuse.org/opensuse-de/ X-MIME-Notice: attachments may have been removed from this message Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-bounce-key: webpack.hosteurope.de;susan_ivanova@vimutik.de;1367821341;1cbbd3aa; X-Virus-Scanned: by amavisd-new at localhost X-TOI-SPAM: u;0;2013-05-06T06:22:34Z X-TOI-VIRUSSCAN: unchecked X-TOI-MSGID: c36fb917-ccbd-4592-aed2-2863b9397778 X-Seen: false X-ENVELOPE-TO: Hallo Zusammen,
Folgendes Problem: Ich habe hier einige hundert (automatisch erzeugter) Dateien, deren Name sich aus einem Text und einer fortlaufenden Nummer zusammensetzt. Leider wurden die Nummern nicht mit f=C3=BChrenden Nullen auf gleiche L=C3=A4nge gebracht. Je nach Programm fol= gt so der Daten xy-1.abc die Datei xy-10.abc und nicht etwa xy-2.abc. Wie kann ich die Dateien so umbenennen, dass aus xy-nm.abc xy-000nm.abc wird.
Mit freundlichen Gr=C3=BC=C3=9Fen
si -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Susan, gefühlsmässig mit einem perl-skript (Achtung - keine Kontrolle auf Konflikte) opendir D, "." @files = readdir D; closedir D; foreach $f (@files) { if($f =~ /(.*)-(\d+).abc$/ && length $2 < 5) { $f2 = sprintf "$1-%05d.abc", $2; print "rename $f to $f2\n"; #rename $f, $ } } Wolfgang -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hallo Susan, mir würde ein kleines Shellskript dazu einfallen. Offensichtlich ist die Zahl ja zwischen einem - und einem . eingeschlossen. Mit for i in * do vorn=`echo $i | cut -f1 -d\- ` hinten=`echo $i | cut -f2 -d\. ` zahl=`echo $i | cut -f2 -d\- | cut -f1 -d\.` zahl=`00000$zahl` len=`echo $zahl | wc -c` n=`expr $len -5 ` mv $i $vorn-${zahl:n:5}.$hinten done sollte das ungefähr eine auf 5 Ziffern festgelegte Zahl hinauslaufen. Achtung: Das da oben habe ich schnell hingetippt und nicht auf Funktionalität geprüft. Es ist nur die Grundidee. Du wirst die Idee nachvollziehen können und das ganze umsetzen. Gruß Jan Am 06.05.2013 08:22, schrieb Susan Ivanova:
Hallo Zusammen,
Folgendes Problem: Ich habe hier einige hundert (automatisch erzeugter) Dateien, deren Name sich aus einem Text und einer fortlaufenden Nummer zusammensetzt. Leider wurden die Nummern nicht mit führenden Nullen auf gleiche Länge gebracht. Je nach Programm folgt so der Daten xy-1.abc die Datei xy-10.abc und nicht etwa xy-2.abc. Wie kann ich die Dateien so umbenennen, dass aus xy-nm.abc xy-000nm.abc wird.
Mit freundlichen Grüßen
si
- -- _________________________________________________________________ Jan Handwerker http://www.imk-tro.kit.edu/1272_jan.handwerker.php Recursion (f) --> Recursion Mit LaTeX wär das nicht passiert. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) Comment: Digitale Unterschrift mit GnuPG Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlGHVTMACgkQ4wryzGTbiqi9CgCfUHwZTWptXa5VICfaYuCnNIru FoEAn1KHWPpRvUj32f0hiJ8tUFhu0IWR =OWZI -----END PGP SIGNATURE----- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Susan Ivanova [06.05.2013 08:22]:
Hallo Zusammen,
Folgendes Problem: Ich habe hier einige hundert (automatisch erzeugter) Dateien, deren Name sich aus einem Text und einer fortlaufenden Nummer zusammensetzt. Leider wurden die Nummern nicht mit führenden Nullen auf gleiche Länge gebracht. Je nach Programm folgt so der Daten xy-1.abc die Datei xy-10.abc und nicht etwa xy-2.abc. Wie kann ich die Dateien so umbenennen, dass aus xy-nm.abc xy-000nm.abc wird.
Ich setze dazu immer mehrere Aufrufe von mmv ein. a) installieren: zypper in mmv b) anwenden: mmv "xy-[0-9].abc" "xy-000#1.abc" mmv "xy-[0-9][0-9].abc" "xy-00#1#2.abc" mmv "xy-[0-9][0-9][0-9].abc" "xy-0#1#2#3.abc" HDH, Werner -- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Mon, 6 May 2013 08:22:19 +0200
schrieb Susan Ivanova
Hallo Zusammen,
Folgendes Problem: Ich habe hier einige hundert (automatisch erzeugter) Dateien, deren Name sich aus einem Text und einer fortlaufenden Nummer zusammensetzt. Leider wurden die Nummern nicht mit führenden Nullen auf gleiche Länge gebracht. Je nach Programm folgt so der Daten xy-1.abc die Datei xy-10.abc und nicht etwa xy-2.abc. Wie kann ich die Dateien so umbenennen, dass aus xy-nm.abc xy-000nm.abc wird.
Mit freundlichen Grüßen
si
Zunächst einmal meinen Dank für die unterschiedlichen Lösungen/Lösungsansätze. Ausgehend von der Kaskaden-Variante habe ich einen Einzeiler(die Darstellung ahbe ich nach dem kopieren von der Konsole etwas aufgehübscht;-) mit sed: for f in *; do mv ${f} $(echo ${f} | sed -e 's/\([^0-9]\)\([0-9]\{1\}\)\./\10\2./g' -e 's/\([^0-9]\)\([0-9]\{1,2\}\)\./\10\2./g' -e 's/\([^0-9]\)\([0-9]\{1,3\}\)\./\10\2./g' -e 's/\([^0-9]\)\([0-9]\{1,4\}\)\./\10\2./g'); done ausprobiert. Er scheint in einem Testfeld mit zwei Dutzend Dateien zu funktionieren. Falls jemand einen Fehler sieht, bitte sagen; Ich kenne die sed-Syntax nicht gerade gut. Leider kann man bei sed gespeicherte Muster nicht wie bei printf formatieren. Mit freundlichen Grüßen si -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (6)
-
Andreas Dafferner
-
hamann.w@t-online.de
-
Handwerker, Jan (IMK)
-
Rainer Sokoll
-
Susan Ivanova
-
Werner Flamme