Bash Script fix file extension

Ceritanya ada RIBUAN file seperti ini :

$ find . -type f -name "*jpg" | grep -v "\.jpg" | head
./Peraturan-Presiden-Republik-Indonesia-Nomor-45-tahun-20145181023092910jpg
./utama/Mekanisme-Penyusunan-APBD40181023054910jpg
./Indonesia-Electricity-Development-and-Investment-Opportunities-by-Ministry-of-Energy-and-Mineral-Resources17181023050543jpg
./Approaching-The-Flash-Point--International-Perspectives-on-Local-Regulatory-Issues-for-Geothermal-Power-Projects1180322043721jpg
./penting/ini/di/direktori/lainInvestment-Book-201697181024085607jpg
./direktori/lagi/Peraturan-Pemerintah-Republik-Indonesia-Nomor-43-Tahun-199330181023044000jpg
./Financial-Report-2015-Audited77181023063459jpg
./Pemberkasan-Arsip-Aktif27181024094032jpg
./Banking-on-the-Future-of-Asia-and-the-Pacific118181024024453jpg
./blabla/Lampiran-Peraturan-Menteri-Pekerjaan-Umum-Dan-Perumahan-Rakyat-Republik-Indonesia-Nomor-14PRTM2015-Tahun-2015246181024033117jpg

ribuan file tersebut yang berada di dalam direktori, dan sub direktorinya, memiliki ekstensi yang salah, yaitu blablajpg yang seharusnya blabla.jpg.

Maka diperlukan sebuah bash script untuk memperbaiki ini. Dengan memanfaatkan simple regex dan digabungkan dengan perintah lain, maka berikut scriptnya untuk memperbaiki kesalahan nama tersebut:

for file in $(find . -type f -name "*jpg" | grep -v "\.jpg"); do target=`echo "$file" | sed 's/jpg//'` && mv -v $file $target.jpg; done

hasilnya

$ find . -type f -name "*jpg" | grep -v "\.jpg" | head

Referensi
  • linux/Bash.Script.Fix.extension
  • Terakhir diubah: 5 bulan yang lalu
  • (Perubahan eksternal)