Anda dapat menggunakan detox
oleh Doug Harple
detox -r <folder>
Gunakan rename
(alias prename
) yang merupakan skrip Perl yang mungkin sudah ada di sistem Anda. Lakukan dalam dua langkah:
find . -name "* *" -type d | rename 's/ /_/g' # do the directories first
find . -name "* *" -type f | rename 's/ /_/g'
Berdasarkan Jürgen menjawab dan mampu menangani banyak lapisan file dan direktori dalam satu ikatan menggunakan versi "Revisi 1.5 1998/12/18 16:16:31 rmb1" dari /usr/bin/rename
(skrip Perl):
find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;
Saya menggunakan:
for f in *\ *; do mv "$f" "${f// /_}"; done
Meskipun tidak rekursif, ini cukup cepat dan sederhana. Saya yakin seseorang di sini dapat memperbaruinya menjadi rekursif.
${f// /_}
bagian menggunakan mekanisme ekspansi parameter bash untuk mengganti pola dalam parameter dengan string yang disediakan. Sintaks yang relevan adalah ${parameter/pattern/string}
. Lihat:https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html atau http://wiki.bash-hackers.org/syntax/pe .
find . -depth -name '* *' \
| while IFS= read -r f ; do mv -i "$f" "$(dirname "$f")/$(basename "$f"|tr ' ' _)" ; done
gagal melakukannya dengan benar pada awalnya, karena saya tidak memikirkan direktori.