Saya memiliki sejumlah file tiff bernama:
sw.001.tif
sw.002.tif
...
dan saya ingin menghapus .tif
di akhir setiap file. Bagaimana saya bisa menggunakan rename
perintah untuk melakukan ini?
Saya memiliki sejumlah file tiff bernama:
sw.001.tif
sw.002.tif
...
dan saya ingin menghapus .tif
di akhir setiap file. Bagaimana saya bisa menggunakan rename
perintah untuk melakukan ini?
Jawaban:
perl
's rename
(seperti biasanya ditemukan di Debian di mana juga disebut prename
), atau turunan ini ( rename
paket di Debian):
rename 's/\.tif$//' *.tif
util-linux
rename
(seperti yang biasanya ditemukan di Red Hat, rename.ul
di Debian):
rename -- .tif '' *.tif
(perhatikan bahwa seseorang akan mengganti nama blah.tiffany.tif
menjadi 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.tmp
ekstensi di folder saat ini akan diubah namanya menjadi filename.gz
.
Lihat artikel: Linux: hapus ekstensi file untuk banyak file untuk detailnya.
rename
yang tidak kompatibel dengan (dan jauh lebih terbatas dari) rename
perintah tradisional dari perl
.
.oldext
dalam nama file, belum tentu ekstensi ( foo.oldextasy.oldext
akan diubah namanya menjadi footasy.oldext
).
dapatkah kita membuat ini rekursif
for i in *.gz; do mv -i $i `basename $i .gz`; done