GNU/Linux >> Znalost Linux >  >> Linux

Linuxový shell skript pro přidání úvodních nul k názvům souborů

Pomocí rename (prename v některých případech) skript, který je někdy instalován s Perlem, můžete k přejmenování použít výrazy Perl. Pokud dojde ke kolizi názvu, skript přejmenování přeskočí.

Níže uvedený příkaz přejmenuje pouze soubory, které mají čtyři nebo méně číslic následovaných příponou „.txt“. Nepřejmenovává soubory, které přesně neodpovídají tomuto vzoru. Nezkracuje názvy, které se skládají z více než čtyř číslic.

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

Několik příkladů:

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

Další odpovědi, které byly dosud uvedeny, se pokusí přejmenovat soubory, které neodpovídají vzoru, produkovat chyby v názvech souborů, které obsahují nečíselné znaky, provádět přejmenování, která způsobí kolize názvů, pokusit se a neúspěšně přejmenovat soubory, které mají v názvech mezery a případně další problémy.


One-liner:

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

Jak mohu použít grep k vyhledání pouze řádků, které obsahují \d.txt (IE 1 číslice, pak tečka, potom písmena txt)?

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

Zkuste:

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

Změňte vzor názvu souboru ([0-9]*.txt ) podle potřeby.

Univerzální výčtové přejmenování, které nevytváří žádné předpoklady ohledně počáteční sady názvů souborů:

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

Na stejné téma:

  • Bash skript pro vyplnění názvů souborů
  • Extrahujte název souboru a příponu v bash

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

Linux
  1. Jak přejmenovat soubor v Linuxu?

  2. Jak nahradit mezery v názvech souborů pomocí bash skriptu

  3. Jak změnit slovo v souboru pomocí skriptu linux shell

  1. Přesunutí souboru v Linuxu v C

  2. Transliterační skript pro linuxové prostředí

  3. Jak zkontrolovat, zda skupina existuje, a přidat, pokud ne, v Linux Shell Script

  1. nelze spustit binární soubor při pokusu o spuštění skriptu shellu na linuxu

  2. Může být soubor .sh malware?

  3. Jak přidat uživatele do Linuxu pomocí shell skriptu