Saya memiliki direktori dengan file .MP3 yang ingin saya ubah ekstensi menjadi .mp3. Apa cara termudah untuk melakukan ini? Saya memikirkan sesuatu seperti:
find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/\1.mp3/ \;
... meskipun saya tahu itu tidak benar. :) substitusi adalah tidak benar dan saya tidak yakin bagaimana menggunakan kedua mv
dan sed
perintah dengan -exec
di find
.
Apakah saya memerlukan skrip bash untuk ini?
Dalam zsh:
Untuk juga mengurus
.Mp3
atau.mP3
file:sumber
Anda dapat menggunakan perintah rename (waspadalah ada dua implementasi utama dengan API yang berbeda) untuk itu. Misalnya untuk mengubah kasus ekstensi nama file dari atas ke bawah, coba ini:
dengan
rename
dariutil-linux
(kadang-kadang disebutrename.ul
), dengan asumsi.JPG
hanya terjadi sekali dalam nama filedengan
rename
dariperl
(kadang-kadang disebutprename
; beberapa varian telah diterbitkan):Berikut adalah beberapa tutorial tentang bagaimana ia berpindah dari skrip bash yang berantakan ke perintah sederhana ini untuk kasus penggunaan Anda.
Perintah mewah lain untuk melakukan ini adalah
pax
. Jika Anda menggunakan ZSH untuk shell Anda, Anda juga bisa menggunakannyazmv
.sumber
syntax error at (user-supplied code), near "."
, ketika saya menjalankan perintah ini.Gunakan perl-rename , swiss army knife dari penggantian nama file dengan ekspresi reguler (di ubuntu, paket ini dibundel dengan paket perl sebagai prename):
Jika Anda termasuk orang yang berhati-hati, gunakan opsi -n dan -v untuk perl mengganti nama untuk melihat apa yang sebenarnya akan dilakukan.
sumber
Anda memerlukan skrip, karena "ekstensi" di Linux sebenarnya hanya bagian dari string nama file. Anda harus melakukan manipulasi string dalam skrip untuk mendapatkan nama baru.
Kutipan ganda penting jika Anda memiliki nama file dengan spasi putih di dalamnya. Saya pikir beberapa kutipan ganda agak tidak jelas.
sumber
Dalam bash:
sumber
pertama-tama buat cadangan file Anda! Anda bisa menggunakan python one-liner:
EDIT:
Berikut adalah penjelasan terperinci tentang bagaimana one-liner sebenarnya bekerja. Menggunakan
python -c
kami melewati perintah ke juru bahasa python. Setelah mengimpor pustakaos
untukrename
fungsi danglob
untuk daftar file, kita perlu beralih melalui daftar file di direktori yang diberikan, yang saya panggilPATH_TO_YOUR_DIRECTORY
, misalnya sesuatu seperti./*
untuk semua yang ada di direktori saat ini.Dalam sintaks satu-liner sayangnya
for
loop tidak berfungsi setelahimport
notasi, jadi kita perlu menggunakan notasi braket. Yaitu untuk setiap file atau nama direktori yangglob
memberi kita dari jalur yang diberikan dalam bentuk string, kita ganti * .MP3 ke * .mp3.Karena OP tidak menyebutkan pencarian rekursif, saya tidak memasukkannya di tempat pertama.
sumber