Saya memiliki sejumlah file tiff bernama:
sw.001.tif
sw.002.tif
...
dan saya ingin menghapus .tifdi akhir setiap file. Bagaimana saya bisa menggunakan renameperintah untuk melakukan ini?
Saya memiliki sejumlah file tiff bernama:
sw.001.tif
sw.002.tif
...
dan saya ingin menghapus .tifdi akhir setiap file. Bagaimana saya bisa menggunakan renameperintah untuk melakukan ini?
Jawaban:
perl's rename(seperti biasanya ditemukan di Debian di mana juga disebut prename), atau turunan ini ( renamepaket di Debian):
rename 's/\.tif$//' *.tif
util-linux rename(seperti yang biasanya ditemukan di Red Hat, rename.uldi Debian):
rename -- .tif '' *.tif
(perhatikan bahwa seseorang akan mengganti nama blah.tiffany.tifmenjadi blahfany.tif)
Untuk non-rename, Anda dapat melakukan:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i untuk memperingatkan agar tidak mengganti file)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
Ini menggantikan ekstensi lama dengan yang baru. Untuk menghapus ekstensi, Anda dapat secara eksplisit meneruskan string kosong sebagai argumen.
rename -- .gz.tmp '' *.gz.tmp
Dengan perintah di atas, semua file dengan .gz.tmpekstensi di folder saat ini akan diubah namanya menjadi filename.gz.
Lihat artikel: Linux: hapus ekstensi file untuk banyak file untuk detailnya.
renameyang tidak kompatibel dengan (dan jauh lebih terbatas dari) renameperintah tradisional dari perl.
.oldext dalam nama file, belum tentu ekstensi ( foo.oldextasy.oldextakan diubah namanya menjadi footasy.oldext).
dapatkah kita membuat ini rekursif
for i in *.gz; do mv -i $i `basename $i .gz`; done