GNU/Linux >> Belajar Linux >  >> Linux

Skrip shell Linux untuk menambahkan angka nol di depan nama file

Menggunakan rename (prename dalam beberapa kasus) skrip yang terkadang diinstal dengan Perl, Anda dapat menggunakan ekspresi Perl untuk melakukan penggantian nama. Skrip melompati penggantian nama jika ada benturan nama.

Perintah di bawah hanya mengganti nama file yang memiliki empat digit atau kurang diikuti dengan ekstensi ".txt". Itu tidak mengganti nama file yang tidak sepenuhnya sesuai dengan pola itu. Itu tidak memotong nama yang terdiri dari lebih dari empat digit.

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

Beberapa contoh:

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

Jawaban lain yang diberikan sejauh ini akan mencoba mengganti nama file yang tidak sesuai dengan pola, menghasilkan kesalahan untuk nama file yang mengandung karakter non-digit, melakukan penggantian nama yang menghasilkan tabrakan nama, mencoba dan gagal mengganti nama file yang memiliki spasi di namanya dan mungkin masalah lain.


Satu kalimat:

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

Bagaimana cara menggunakan grep untuk hanya mencocokkan baris yang berisi \d.txt (IE 1 digit, lalu titik, lalu huruf txt)?

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

Coba:

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

Ubah pola nama file ([0-9]*.txt ) seperlunya.

Penggantian nama yang disebutkan untuk tujuan umum yang tidak membuat asumsi tentang set awal nama file:

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

Pada topik yang sama:

  • Bash script untuk mengisi nama file
  • Ekstrak nama file dan ekstensi di bash

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

Linux
  1. Bagaimana Mengganti Nama File di Linux?

  2. Cara mengganti spasi pada nama file menggunakan skrip bash

  3. Cara mengubah kata dalam file dengan skrip shell linux

  1. Memindahkan file di Linux ke C

  2. tidak dapat mengeksekusi file biner saat mencoba menjalankan skrip shell di linux

  3. Bisakah file .sh menjadi malware?

  1. Cara Menambahkan Nomor Baris Ke File Teks Di Linux

  2. Cara menambahkan pengguna ke Linux melalui skrip shell

  3. Membuat template dengan Linux dalam Shell Script?