Zahlen von Dateinahmen auf eine einheitliche Länge zu bringen

15/05/2010 - 12:23 von Mike Sephan | Report spam
Ich versuche gerade Dateien in einem Verzeichnis die z.B. so aussehen:

26(1).jpg
26(22).jpg

per Skript zu wandeln in:

26(001).jpg
26(022).jpg

Also die Zahlen auf eine einheitliche Lànge zu bringen. Ich nicht weiß
wie man auf die Anzahl der Stellen testet. Dafür habe ich eine andere
Herangehensweise. Ich habe ein GUI Tool um Dateien umzubenennen, welches
ich auch für diesen Fall genutzt habe. Das Programm verwendet zur
Umbenennung auch regexp mit einem Zusatz. Und zwar kann es die gefundene
Subexpression für die Ersetzung wieder verwenden (durch $(n)). So konnte
mich langsam nach oben arbeiten. Und zwar so:

Einstelliges auf zwei Stellen erweitern:
\(.\) > 0$(0) # 260(1).jpg
0( > (0 # 26(01).jpg

Zweistelliges auf drei Stellen erweitern:
\(..\) > 0$(0) # 260(01).jpg; 260(22).jpg
0( > (0 # 26(001).jpg; 26(022).jpg

Wahrscheinlich primitiv und ziemlich umstàndlich, aber es hat
funktioniert ;)

Ich habe zwar schon gesucht, konnte aber leider bisher noch nichts
vergleichbares für $(0) für die Shell finden.

Aber vielleicht gibts ja noch ne viel coolere Lösung :)
 

Lesen sie die antworten

#1 Fr
15/05/2010 - 12:45 | Warnen spam
Mike Sephan schrieb:
Ich versuche gerade Dateien in einem Verzeichnis die z.B. so aussehen:

26(1).jpg
26(22).jpg

per Skript zu wandeln in:

26(001).jpg
26(022).jpg

Also die Zahlen auf eine einheitliche Lànge zu bringen. Ich nicht weiß
wie man auf die Anzahl der Stellen testet. Dafür habe ich eine andere
Herangehensweise. Ich habe ein GUI Tool um Dateien umzubenennen, welches
ich auch für diesen Fall genutzt habe. Das Programm verwendet zur
Umbenennung auch regexp mit einem Zusatz. Und zwar kann es die gefundene
Subexpression für die Ersetzung wieder verwenden (durch $(n)). So konnte
mich langsam nach oben arbeiten. Und zwar so:

Einstelliges auf zwei Stellen erweitern:
\(.\) > 0$(0) # 260(1).jpg
0( > (0 # 26(01).jpg

Zweistelliges auf drei Stellen erweitern:
\(..\) > 0$(0) # 260(01).jpg; 260(22).jpg
0( > (0 # 26(001).jpg; 26(022).jpg

Wahrscheinlich primitiv und ziemlich umstàndlich, aber es hat
funktioniert ;)

Ich habe zwar schon gesucht, konnte aber leider bisher noch nichts
vergleichbares für $(0) für die Shell finden.



"printf" freut sich, dich kennenzulernen, z.B.

for i in `seq 1 10`; do printf "%03g" $i; done

Viele Grüße aus den verregneten Alpen,
Frank

Ähnliche fragen