Bagaimana Anda mengganti nama semua file/subdir di folder saat ini?
Katakanlah, saya memiliki banyak file dan subdir dengan spasi dan saya ingin mengganti semua spasi dengan garis bawah.
File 1
File 2
File 3
Dir 1
Dir 3
harus diganti namanya menjadi
File_1
File_2
File_3
Dir_1
Dir_3
Jawaban yang Diterima:
Jika Anda juga perlu mengganti nama file di subdirektori, dan find
mendukung -execdir
predikat, maka Anda dapat melakukan
find /search/path -depth -name '* *'
-execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} ;
Terima kasih kepada @glenn jackman karena telah menyarankan -depth
opsi untuk find
dan membuatku 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 (biasanya dengan file media dengan nama dengan karakter non-ASCII yang dikodekan dalam rangkaian karakter yang berbeda dari lokal). Menyetel lokal ke C
(seperti dalam LC_ALL=C find...
) akan mengatasi masalah tersebut.