GNU/Linux >> Belajar Linux >  >> Linux

Pintasan Shell/Bash untuk mengganti nama file dalam folder secara massal

Ada prename , yang memungkinkan Anda menggunakan REGEX:

prename 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Gunakan opsi -n untuk mensimulasikan:

prename -n 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Catatan: Ini dikirim sebagai rename di banyak distribusi Linux, tetapi tidak semuanya -- jadi saya menggunakan nama kanonis untuk utilitas yang disertakan dengan Perl.


Saya akan menyarankan sesuatu seperti ini:

for i in *-doc-*.txt; do mv "$i" "${i/*-doc-/doc-}"; done

${i/*-doc-/doc-} menggantikan kemunculan pertama *-doc- dengan doc- .

Jika Anda perlu melakukan lebih dari satu penggantian (lihat komentar nomor 1), Anda perlu menggunakan kode ${var//Pattern/Replacement} varian. Jika Anda perlu mengganti awal nama, Anda perlu menggunakan ${var/#Pattern/Replacement} , jika Anda perlu mengganti bagian akhir (yaitu:ekstensi), Anda perlu menggunakan ${var/%Pattern/Replacement} membentuk.

Lihat Ekspansi Parameter Shell untuk lebih jelasnya. Ekspansi ini spesifik untuk bash.


Jika Anda memiliki rename lalu, rename 's/^.*-doc-/doc-/' *.txt harus melakukan trik.


Jika Anda ingin mengulang ke sub-direktori, ada juga:

find . -maxdepth N -type f -name "$pattern" | sed -e 'p' -E -e "s/$str1/$str2/g" | xargs -n2 mv

Pada sistem yang secara otomatis mendukung perpanjangan Regexps, Anda dapat meninggalkan -E .

Keuntungan:

  • berulang ke sub-direktori
  • Anda dapat mengontrol kedalaman maksimum rekursi
  • Anda dapat mengganti nama file dan/atau direktori (-type f|d)

Kekurangan:

  • regexps sedikit lebih rumit, karena Anda harus menghapus jalur untuk mendapatkan nama file

(jawaban diubah dari sini)


Linux
  1. Script Untuk Memantau Folder Untuk File Baru?

  2. Script Shell Untuk Memindahkan File Terlama?

  3. Pengaturan Di Bash Untuk Globbing, Untuk Mengontrol Apakah * Cocok dengan File Dot?

  1. Apakah Anda Membutuhkan Shell Untuk Scp?

  2. Spasi Untuk Variabel Dalam Skrip Bash?

  3. 12 Contoh Bash For Loop untuk Scripting Shell Linux Anda

  1. Butuh editor hex yang bagus untuk Linux

  2. Skrip Bash:Menggunakan perintah skrip dari skrip bash untuk mencatat sesi

  3. Jalankan semua skrip shell di folder