Ingatlah bahwa TIDAK ada linux atau unix filesystem yang menggunakan "ekstensi" gaya Windows atau VMS - hanya dengan konvensi bahwa akhiran nama file adalah ".tif" atau ".c" atau ".c" atau ".o" atau ".so " atau terserah.
Bruce Ediger
Tidak apa-apa ... Saya mengimpor file dari windows ke linux :)
Paul
1
Secara teknis, Windows juga tidak menggunakan ekstensi file, hanya saja pengelola file Windows 95 tetap menggunakan karakter terakhir dari nama file untuk menentukan tipe file setelah keluar dari skema penamaan MS-DOS dan konvensi itu tetap ada.
RAKK
Jawaban:
23
perl's rename(seperti biasanya ditemukan di Debian di mana juga disebut prename), atau turunan ini ( renamepaket di Debian):
rename 's/\.tif$//' *.tif
util-linuxrename(seperti yang biasanya ditemukan di Red Hat, rename.uldi Debian):
rename -- .tif '' *.tif
(perhatikan bahwa seseorang akan mengganti nama blah.tiffany.tifmenjadi blahfany.tif)
Saya percaya nama "Debian" adalah oleh Larry Wall (dilengkapi dengan Perl?) Dan "Red Hat" satu dari util-linux (rename.ul di Debian IIRC).
XTL
@XTL: Benar. Saya hanya memanggil mereka karena mereka adalah program "ganti nama" yang ditemukan dalam turunan Debian atau Red Hat.
Ignacio Vazquez-Abrams
Terima kasih banyak! Saya tidak pernah menyadari bahwa ada berbagai versi 'ganti nama'. Saya berasumsi ada perbedaan halus lainnya antara perintah di debian & redhat. Saya harus mencari beberapa perbedaan mereka.
Paul
6
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)
Itu mengasumsikan implementasi util-linux renameyang tidak kompatibel dengan (dan jauh lebih terbatas dari) renameperintah tradisional dari perl.
Stéphane Chazelas
Juga perhatikan bahwa itu menggantikan kemunculan pertama.oldext dalam nama file, belum tentu ekstensi ( foo.oldextasy.oldextakan diubah namanya menjadi footasy.oldext).
Stéphane Chazelas
1
Jika Anda menggunakan IBM AIX Anda tidak akan memiliki renameperintah, jadi untuk menghapus batch ekstensi file Anda harus menggunakan perintah vanilla System V UNIX:
for file in *.tif; do
mv $file `echo $file | sed 's/.tif$//'`;
done;
Jawaban:
perl
'srename
(seperti biasanya ditemukan di Debian di mana juga disebutprename
), atau turunan ini (rename
paket di Debian):util-linux
rename
(seperti yang biasanya ditemukan di Red Hat,rename.ul
di Debian):(perhatikan bahwa seseorang akan mengganti nama
blah.tiffany.tif
menjadiblahfany.tif
)sumber
Untuk non-rename, Anda dapat melakukan:
(-i untuk memperingatkan agar tidak mengganti file)
sumber
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
Ini menggantikan ekstensi lama dengan yang baru. Untuk menghapus ekstensi, Anda dapat secara eksplisit meneruskan string kosong sebagai argumen.
Dengan perintah di atas, semua file dengan
.gz.tmp
ekstensi di folder saat ini akan diubah namanya menjadifilename.gz
.Lihat artikel: Linux: hapus ekstensi file untuk banyak file untuk detailnya.
sumber
rename
yang tidak kompatibel dengan (dan jauh lebih terbatas dari)rename
perintah tradisional dariperl
..oldext
dalam nama file, belum tentu ekstensi (foo.oldextasy.oldext
akan diubah namanya menjadifootasy.oldext
).Jika Anda menggunakan IBM AIX Anda tidak akan memiliki
rename
perintah, jadi untuk menghapus batch ekstensi file Anda harus menggunakan perintah vanilla System V UNIX:sumber
dapatkah kita membuat ini rekursif
sumber