saya mencobanya dengan cara berikut:
rename 'bla bla .txt' blabla.txt
Tapi ini tidak berhasil, apa sintaks yang benar untuk kasus ini?
sumber
saya mencobanya dengan cara berikut:
rename 'bla bla .txt' blabla.txt
Tapi ini tidak berhasil, apa sintaks yang benar untuk kasus ini?
Anda seharusnya tidak menggunakan rename
untuk mengganti nama hanya satu file, gunakan mv
(1) sebagai gantinya.
Selanjutnya, untuk menghindari whitepsace, awali dengan \
:
"Ubuntu One"
→ Ubuntu\ One
Perintah Anda adalah
mv bla\ bla.txt blabla.txt
backslash memberitahu bash bahwa karakter selanjutnya entah bagaimana istimewa, misalnya \a
untuk 'bel', \
untuk ruang literal dan sebagainya
lihat man ascii
(7) untuk lebih lanjut
Atau, karena Anda sekarang menggunakan perintah yang benar mv
, Anda dapat mengutip nama file jika ada banyak ruang:
mv "bla bla.txt" blabla.txt
(Ini akan bla\ \ \ \ bla.txt
dalam bentuk lolos)
Dalam bash, string yang dikutip (kutipan tunggal atau ganda) diperlakukan sebagai argumen tunggal, sedangkan string yang tidak dikutip akan dibagi menjadi beberapa argumen, seperti ini:
["mv", "bla", "bla.txt", "blabla.txt", ]
dan mv
mengharapkan:
["mv", "source", "destination", ]
Catatan: mengetik 'mv' dan beberapa karakter pertama dari nama file dan menekan TABakan memberi Anda versi lolos dari nama file, membuat penggantian nama cepat dan mudah.
rename
digunakan untuk memproses batch penamaan ulang file menggunakan ekspresi reguler, seperti yang ditunjukkan dalam contoh dari halaman manualnya :
rename 's/\.bak$//' *.bak
Untuk menghapus setiap kejadian .bak (di akhir string [$]) dari semua file yang cocok dengan "* .bak".
rename adalah perintah khusus untuk penggantian nama massal. Secara tidak sengaja, apa yang biasanya kita sebut "penggantian nama" sebenarnya adalah "perpindahan" ke nama baru:
sumber
A=bla ; mv "$A $A .txt" blabla.txt
akan memindahkan bla bla .txt, tetapiA=bla ; mv '$A $A .txt' blabla.txt
akan mencari file yang sebenarnya bernama "$ A $ A .txt". Salah satu akan bekerja untuk contoh Anda.s adalah perintah sed Substitute.
Adalah untuk whiteSpace
Anda mengganti tanpa apa-apa. String pengganti lain berjalan setelah garis miring kedua.
g adalah untuk Global, yaitu mengganti setiap instance. Menghilangkan g hanya menggantikan instance pertama.
Perintah ini akan menggantikan spasi putih dengan garis bawah di semua file:
sumber