Bagaimana saya melakukannya mv original.filename new.original.filename
tanpa mengetik ulang nama file asli?
Saya membayangkan bisa melakukan sesuatu seperti mv -p=new. original.filename
atau mungkin mv original.filename new.~
atau apa pun - tetapi saya tidak dapat melihat hal seperti ini setelah melihat man mv
/ info mv
pages.
Tentu saja, saya dapat menulis skrip shell untuk melakukan ini, tetapi bukankah sudah ada perintah / bendera untuk itu?
Anda bisa menggunakan
rename(1)
perintah:Sunting: Jika
rename
tidak tersedia dan Anda harus mengganti nama lebih dari satu file, skrip shell benar-benar bisa singkat dan sederhana untuk ini. Misalnya, untuk mengganti nama semua*.jpg
menjadiprefix_*.jpg
di direktori saat ini:sumber
rename 's/(.*).example/$1/' *.example
menyelamatkan saya dari kebosanan.$
dalam skenario ini. Jadi hanya's/(.*)/new.$1/'
rename
perintah tidak berfungsi pada mesin RHEL 6 saya. Apakah ada versi berbeda dari perintah ini? Itufor ... done
berhasil untuk saya.Anda dapat mencapai beberapa penggantian nama file yang kompatibel dengan unix (menggunakan wildcard) dengan membuat for loop:
sumber
${file%%}
lakukan? Tampak mirip dengan hanya $ {file}Saya telah melihat orang-orang menyebutkan sebuah
rename
perintah, tetapi tidak secara rutin tersedia di sistem Unix (sebagai lawan dari sistem Linux, katakanlah, atau Cygwin - di keduanya, mengganti nama adalah yang dapat dieksekusi daripada skrip). Versi tersebutrename
memiliki fungsi yang cukup terbatas:Ini menggantikan dari bagian dari nama file dengan to , dan contoh yang diberikan di halaman manual adalah:
Ini mengganti nama foo1 menjadi foo01, dan foo10 menjadi foo010, dll.
Saya menggunakan skrip Perl yang disebut
rename
, yang awalnya saya gali dari buku Camel edisi pertama, sekitar tahun 1992, dan kemudian diperpanjang, untuk mengganti nama file.Ini memungkinkan Anda untuk menulis pengganti Perl atau perintah transliterasi untuk memetakan nama file. Dalam contoh khusus yang diminta, Anda akan menggunakan:
sumber
pacman
menggunakan:pacman -Sy perl-rename
. Kemudian tambahkan alias di bashrc Anda:alias rename='perl-rename'
'.html
nama file, gunakan's/$/.html/'
- untuk menghapustmp
dari mana saja di nama file, gunakan's/tmp//g'
(temukantmp
dan ganti dengan tidak ada di mana-mana).Cara termudah untuk mengganti nama file dalam direktori secara massal adalah:
sumber
Jika terbuka untuk modifikasi, Anda dapat menggunakan sufiks sebagai ganti awalan. Kemudian Anda bisa menggunakan penyelesaian-tab untuk mendapatkan nama file asli dan menambahkan sufiks.
Jika tidak, ini bukan sesuatu yang didukung oleh perintah mv. Skrip shell sederhana bisa mengatasinya.
sumber
Dalam kasus saya, saya memiliki sekelompok file yang perlu diganti namanya sebelum saya dapat bekerja dengannya. Setiap file memiliki perannya sendiri dalam grup dan memiliki polanya sendiri.
Akibatnya saya memiliki daftar perintah ganti nama seperti ini:
Coba ini juga:
Ini akan menghasilkan semua kombinasi dengan prefiks dan sufiks:
Cara lain untuk mengatasi masalah yang sama adalah dengan membuat larik pemetaan dan menambahkan awalan koresponden untuk setiap jenis file seperti yang ditunjukkan di bawah ini:
sumber
Ganti nama file secara massal skrip bash
sumber
Saya tahu ada jawaban bagus di sini tetapi saya tidak menemukan referensi untuk menangani ekstensi nama file saat menambahkan sufiks.
Saya perlu menambahkan akhiran '_en' ke semua
wav
file di folder sebelum ekstensi file.Keajaiban ada di sini:
%.*
for filename in *.wav; do mv $filename ${filename%.*}_en.wav; done;
Jika Anda perlu menangani ekstensi file yang berbeda, periksa jawaban ini . Sedikit kurang intuitif.
sumber