Saya memiliki direktori dengan file .MP3 yang ingin saya ubah ekstensinya 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 aku tahu itu tidak sepenuhnya benar. Penggantinya salah dan saya tidak yakin bagaimana menggunakan keduanya mv
dan sed
perintah dengan -exec
di find
.
Apakah saya memerlukan skrip bash untuk ini?
Jawaban yang Diterima:
Berikut ini salah satu cara untuk melakukannya di Bash:
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
Saya telah menggunakan echo
di sini jadi perintah itu sendiri tidak melakukan apa pun selain mencetak pasangan nama file. Jika daftar tersebut mewakili perubahan yang ingin Anda buat, maka Anda dapat mengubah echo
untuk sesuatu seperti mv -i --
yang kemudian akan memindahkan file Anda (dan meminta Anda sebelum menimpa).
Penjelasan Singkat:
for
iterasi melalui setiap file yang cocok dengan *
. Kemudian, kami menentukan apakah ekstensi sudah menjadi huruf kecil, jika itu kami lanjutkan, jika tidak, kami melanjutkan untuk memindahkannya (atau menggemakannya, tergantung kasusnya). Ini menggunakan operasi string bawaan Bash yang dapat Anda baca di sini:http://tldp.org/LDP/abs/html/string-manipulation.html