Jika Anda perlu mengganti nama file dalam subdirektori juga, dan Anda find
mendukung -execdir
predikatnya, maka Anda dapat melakukannya
find /search/path -depth -name '* *' \
-execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} \;
Terima kasih kepada @glenn jackman karena menyarankan -depth
opsi untuk find
dan membuat saya berpikir.
Perhatikan bahwa pada beberapa sistem (termasuk yang GNU / Linux), find
mungkin gagal menemukan file yang namanya berisi spasi dan juga urutan byte yang tidak membentuk karakter yang valid (khas dengan file media dengan nama dengan karakter non-ASCII yang dikodekan dalam rangkaian karakter) berbeda dari lokal). Mengatur lokal ke C
(seperti pada LC_ALL=C find...
) akan mengatasi masalah.
find -maxdepth 1
untuk melakukan persis apa yang diminta OP tentang pengoperasian pada folder saat ini.-depth
opsi temukan , dan Anda dapat menyingkirkansort
.-name '* *'
ke-name '*_*'
dan ubah"${1// /_}"
ke"${1//_/.}"
bash
halaman manual.Dalam shell apa pun, Anda dapat mengulang file yang namanya berisi spasi. Mengganti spasi dengan garis bawah mudah di bash, ksh dan zsh dengan
${VARIABLE//PATTERN/REPLACEMENT}
konstruk.Pada Debian, Ubuntu, dan turunannya, Anda dapat menggunakan Perl
rename
(distribusi lain mengirimkan program yang berbedarename
, dan program itu tidak membantu di sini).Solusi wajib zsh:
Solusi POSIX wajib:
sumber
s/…/…/g
berarti mengganti semua kejadian. Itu tidak dijelaskan dengan baik dalam manual . Jika Anda ingin mengganti nama direktori, ada beberapa cara, silakan mencarinya (saya pikir saya pernah melihatnya sebelumnya) dan jika Anda tidak dapat menemukannya, ajukan pertanyaan baru._MG_blah.JPG
menjadiIMG_blah.JPG
.Anda dapat menggunakan
rename
ini (dengan asumsi dariutil-linux
, bukan dariperl
):Ini akan menemukan semua file dan direktori ruang dalam nama dan mengganti ruang dengan garis bawah. Karena menggunakan pencocokan file glob, Anda harus berada di direktori yang benar untuk memulainya.
Jika Anda ingin melakukan pertandingan rekursif Anda bisa, tetapi Anda mungkin harus melakukan
rename
beberapa kali untuk menangkap item dalam direktori yang namanya diubah sendiri:sumber
rename
Akan mengganti nama file yang ditentukan dengan mengganti kemunculan pertama dari dalam nama mereka dengan ke ." Jadi ini hanya akan bekerja untuk file dengan satu spasi dalam nama mereka. (Anda bisa meneleponrename
dalam satu lingkaran, tapi itu bukan alat yang tepat di sini.)Opsi lain adalah
mmv
, jika diinstal.sumber
_
, tidak berfungsi nama dengan banyak spasi.Di Debian / Ubuntu, membangun berdasarkan jawaban Caleb dan Gilles, inilah yang berhasil bagi saya untuk mengubah nama file secara rekursif:
Catatan: Untuk melihat pratinjau file apa yang akan diubah namanya dan caranya, gunakan
-n
sakelar denganrename
:Catatan lain: pengaturan
globstar
membuat**
file yang cocok di semua subdirektori, jadi jika hanya direktori saat ini yang diinginkan, jangan tetapkan globstar atau gunakan*
sebagai gantinya**
.Satu catatan lagi:
rename
Perintah perlu dijalankan lebih dari sekali untuk file dengan banyak kemunculan istilah pencarian.sumber
a b/c d
kea_b/c_d
tidak akan bekerja, Anda akan perlu pertama yang mengubah namaa b/c d
untuka b/c_d
, dan kemudiana b
kea_b
).rename
perintah yang sama dua kali?**
mengecualikan dotfile dan melintasi symlink.Jika Anda bukan flash pada ekspresi reguler (saya tidak!), Dan Anda dapat menjalankan aplikasi yang dirancang untuk KDE (baik Anda menggunakan desktop KDE - k atau Anda memiliki perpustakaan diinstal), maka krename adalah utilitas grafis yang hebat yang memungkinkan Anda melihat sebelum dan sesudah sebelum Anda berkomitmen pada perubahan. Ini memiliki sejumlah transformasi sederhana sebagai opsi dan juga mendukung ekspresi reguler. Anda bahkan dapat menggabungkan beberapa transformasi sekuensial menjadi satu penggantian nama sehingga Anda tidak perlu mendesain transformasi kompleks tunggal yang melakukan semuanya sekaligus. Ini juga memiliki opsi untuk terus mengubah nama file yang sama setelah nama telah diterapkan.
Saya tidak menggunakannya sesering itu, tetapi ketika saya melakukannya, itu benar-benar menyelesaikan pekerjaan dengan cepat dan mudah. Ini sangat berguna ketika mengganti nama berbagai file media yang diunduh sehingga Anda dapat mengelolanya secara seragam di sistem Anda. Membantu mengunduh manual krename secara terpisah sehingga Anda dapat merujuknya saat menggunakan program.
http://www.krename.net/
sumber