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