GNU/Linux >> Linux Esercitazione >  >> Linux

Script della shell di Linux per aggiungere zeri iniziali ai nomi dei file

Utilizzando il rename (prename in alcuni casi) script che a volte viene installato con Perl, è possibile utilizzare le espressioni Perl per eseguire la ridenominazione. Lo script salta la ridenominazione se c'è una collisione di nomi.

Il comando seguente rinomina solo i file che hanno quattro o meno cifre seguite da un'estensione ".txt". Non rinomina i file che non sono strettamente conformi a tale modello. Non tronca i nomi composti da più di quattro cifre.

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

Alcuni esempi:

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

Altre risposte fornite finora tenteranno di rinominare i file che non sono conformi al modello, produrre errori per i nomi di file che contengono caratteri non numerici, eseguire rinominazioni che producono collisioni di nomi, provare e fallire a rinominare i file che hanno spazi nei loro nomi e forse altri problemi.


Una riga:

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

Come posso utilizzare grep per abbinare solo le righe che contengono \d.txt (IE 1 cifra, poi un punto, poi le lettere txt)?

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

Prova:

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

Cambia lo schema del nome file ([0-9]*.txt ) se necessario.

Una ridenominazione enumerata generica che non fa supposizioni sull'insieme iniziale di nomi di file:

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

Sullo stesso argomento:

  • Script Bash per riempire i nomi dei file
  • Estrai nome file ed estensione in bash

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

Linux
  1. Come rinominare un file in Linux?

  2. Come cambiare una parola in un file con lo script della shell linux

  3. Spostare un file su Linux in C

  4. impossibile eseguire il file binario quando si tenta di eseguire uno script di shell su Linux

  5. Un file .sh può essere un malware?

Come rinominare uno o più file in Linux

Come aggiungere numeri di riga a file di testo su Linux

Come eseguire lo script della shell come servizio Systemd in Linux

Stampa il tempo di esecuzione dello script della shell in Linux

Che cos'è Shebang negli script della shell di Linux?

Come verificare se esiste un gruppo e aggiungerlo in caso contrario in Linux Shell Script