GNU/Linux >> Belajar Linux >  >> Linux

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

Saat ini saya mencoba mengganti nama sekumpulan besar file dan telah menggunakan metode yang cukup rumit untuk melakukannya, seperti:

rename 's:(.*).MOV:$1.mov:g' *.MOV
rename 's:(.*).JPG:$1.jpg:g' *.JPG

Yang benar-benar ingin saya lakukan adalah dapat menggabungkan semua perintah ini menggunakan 'y' sed operator. Terbukti, dengan menggunakan operator ini, Anda dapat mengubah item menjadi huruf kecil. Masalahnya adalah saya hanya perlu mengonversi ekstensi. Apakah ada cara untuk melakukan ini menggunakan perintah ini? Saya pada dasarnya perlu mengubah grup tangkapan dalam ekspresi berikut menjadi huruf kecil:^.+.(.+)$ . Apakah ada cara untuk melakukan ini? Saya agak baru dalam transformasi semacam ini.

Jawaban yang Diterima:

Itulah rename berbasis Perl ditemukan di Debian, Ubuntu dan turunannya, dilihat dari sintaksnya. Anda tidak dapat menggunakan tr operator karena bekerja pada seluruh string. Tetapi Anda dapat mencocokkan ekstensi, dan huruf kecil dengan L .

rename 's/.[^.]*$/L$&/' *.JPG *.MOV

Di sini tidak perlu, tetapi jika regexp lebih cocok dari bagian yang ingin Anda kecilkan, Anda dapat menempatkan bagian yang akan dicocokkan dalam grup:

rename 's/.([^.]*)$/.L$1/' *.JPG *.MOV

Ganti *.JPG *.MOV oleh *.* untuk bertindak pada semua file terlepas dari ekstensi. Di bash 4.3 (dan juga di bash 4.0–4.2, dengan peringatan bahwa ini juga melintasi tautan simbolis ke direktori), Anda dapat dengan mudah bertindak pada file di subdirektori dan seterusnya secara rekursif:

rename 's/.[^.]*$/L$&/' **/*.*

Untuk penggemar zsh (:r dan :e pengubah mengisolasi ekstensi dari sisa file):

autoload zmv
zmv '*.(MOV|JPG)' '${f:r}.${(L)f:e}'      # these extensions, current directory
zmv '*.*' '${f:r}.${(L)f:e}'              # all extensions, current directory
zmv '**/*.*' '${f:r}.${(L)f:e}'           # all extensions, recursive directory traversal

Linux
  1. 3 Cara Menghapus Semua File di Direktori Kecuali Satu atau Beberapa File dengan Ekstensi

  2. Cara Mengganti Nama File di Linux

  3. Mengganti nama file di linux dengan regex

  1. Centos – Ganti Nama Semua File Dengan Nama Tertentu?

  2. Bagaimana Mengganti Nama Kumpulan File Dengan Pola?

  3. Linux:hapus ekstensi file untuk banyak file

  1. Linux mengganti nama file menjadi huruf besar

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

  3. Bisakah saya mengganti nama file dalam direktori dengan Vim?