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