GNU/Linux >> Belajar Linux >  >> Linux

Mengganti nama file di linux dengan regex

Solusi 1:

Saya biasa menulis skrip perl untuk melakukan ini, sampai saya menemukan perintah rename.

Ia menerima perl regex untuk melakukan rename:

untuk ini, saya hanya mengetik dua perintah:

rename 's/(\w+)-(\w+)-(\d\d)-(\d{4})-NODATA.txt\$1.$4$3$2.log$//' *
rename 'y/A-Z/a-z/' *.log

Untuk beberapa distro, rename tidak memiliki fungsi ini (lihat halaman manualnya), dan Anda mungkin harus memasang perl-rename atau prename .

Solusi 2:

mmv adalah utilitas linux standar untuk memindahkan/mengganti nama banyak file. Ini tersedia dari repo untuk sebagian besar distribusi. Untuk contoh Anda di atas, Anda dapat melakukan:

mmv '*-Log-*-*-*-NODATA.txt' '#l1.#4#3#2.log'

Untuk informasi selengkapnya, baca artikel debaday ini atau halaman manual.

Solusi 3:

Karena saya tidak memiliki perintah ganti nama, saya mengandalkan ini:

for myfile in /my/folder/*; do
    target=$(echo $myfile|sed -e 's/foo/bar/g')
    mv "$myfile" "$target"
done

Solusi 4:

rename util tidak terlalu "standar". Setiap distro dikirimkan dengan rename yang berbeda alat. Misalnya, di sini di Gentoo, rename berasal dari sys-apps/util-linux paket dan tidak mendukung regex.

Hamish Downer disarankan mmv , tampaknya berguna, khususnya untuk digunakan di dalam skrip.

Di sisi lain, untuk kasus umum, Anda mungkin menginginkan renameutils. Ini memiliki qmv dan qcp perintah, yang akan membuka editor teks pilihan Anda (preferensi saya:Vim) dan memungkinkan Anda mengedit nama file tujuan di sana. Setelah menyimpan dan menutup editor, qmv /qcp akan melakukan semua penggantian nama.

Keduanya mmv dan qmv cukup pintar untuk mengganti nama file dalam urutan yang benar dan juga untuk mendeteksi penggantian nama melingkar, dan secara otomatis akan membuat file sementara jika diperlukan.


Linux
  1. Mengganti Nama File Menjadi Ekstensi Huruf Kecil Dengan 'ganti nama'?

  2. Bekerja dengan file ZIP di Linux

  3. Mengganti nama banyak file di Linux sesuai dengan pola

  1. Cara mengenkripsi file dengan gocryptfs di Linux

  2. Apakah ada perintah linux seperti mv tetapi dengan regex?

  3. Bagaimana cara mengganti nama file dengan spasi menggunakan shell Linux?

  1. Cara Mengganti Nama File di Linux

  2. Metamorphose 2 – Batch Ganti Nama File dan Folder Anda di Linux

  3. Linux mengganti nama file menjadi huruf besar