GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Shell-Skript zum Hinzufügen führender Nullen zu Dateinamen

Mit dem rename (prename in einigen Fällen) Skript, das manchmal mit Perl installiert wird, können Sie Perl-Ausdrücke verwenden, um die Umbenennung vorzunehmen. Das Skript überspringt die Umbenennung, wenn es eine Namenskollision gibt.

Der folgende Befehl benennt nur Dateien um, die aus vier oder weniger Ziffern gefolgt von einer „.txt“-Erweiterung bestehen. Dateien, die diesem Muster nicht strikt entsprechen, werden nicht umbenannt. Namen, die aus mehr als vier Ziffern bestehen, werden nicht abgeschnitten.

rename 'unless (/0+[0-9]{4}.txt/) {s/^([0-9]{1,3}\.txt)$/000$1/g;s/0*([0-9]{4}\..*)/$1/}' *

Ein paar Beispiele:

Original    Becomes
1.txt       0001.txt
02.txt      0002.txt
123.txt     0123.txt
00000.txt   00000.txt
1.23.txt    1.23.txt

Andere bisher gegebene Antworten versuchen, Dateien umzubenennen, die nicht dem Muster entsprechen, Fehler für Dateinamen zu erzeugen, die keine Ziffern enthalten, Umbenennungen durchzuführen, die zu Namenskollisionen führen, versuchen und scheitern, Dateien umzubenennen, die Leerzeichen in ihren Namen haben und möglicherweise andere Probleme.


Einzeiler:

ls | awk '/^([0-9]+)\.txt$/ { printf("%s %04d.txt\n", $0, $1) }' | xargs -n2 mv

Wie verwende ich grep, um nur Zeilen zu finden, die \d.txt enthalten (IE 1 Ziffer, dann einen Punkt, dann die Buchstaben txt)?

grep -E '^[0-9]\.txt$'

Versuchen Sie:

for a in [0-9]*.txt; do
    mv $a `printf %04d.%s ${a%.*} ${a##*.}`
done

Ändern Sie das Dateinamenmuster ([0-9]*.txt ) nach Bedarf.

Eine allgemeine Aufzählungsumbenennung, die keine Annahmen über den anfänglichen Satz von Dateinamen macht:

X=1;
for i in *.txt; do
  mv $i $(printf %04d.%s ${X%.*} ${i##*.})
  let X="$X+1"
done

Zum gleichen Thema:

  • Bash-Skript zum Auffüllen von Dateinamen
  • Dateinamen und Erweiterung in Bash extrahieren

for a in *.txt; do
  b=$(printf %04d.txt ${a%.txt})
  if [ $a != $b ]; then
    mv $a $b
  fi
done

Linux
  1. Benennen Sie eine Datei im Linux-Terminal um

  2. Linux - Ersetzen von Leerzeichen in den Dateinamen

  3. So prüfen Sie, ob eine Gruppe vorhanden ist, und fügen sie hinzu, wenn dies nicht der Fall ist, in Linux Shell Script

  4. Kann eine .sh-Datei Malware sein?

  5. So fügen Sie Benutzer über ein Shell-Skript zu Linux hinzu

So benennen Sie eine Datei (en) in Linux um

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

Ausführungszeit des Shell-Skripts in Linux drucken

Was ist Shebang in Linux Shell Scripting?

Binärdatei kann nicht ausgeführt werden, wenn versucht wird, ein Shell-Skript unter Linux auszuführen

Templating mit Linux in einem Shell-Skript?