detox
を使用できます ダグ・ハープル著
detox -r <folder>
rename
を使用 (別名 prename
) これは、すでにシステムにある可能性のある Perl スクリプトです。 2 つのステップで行います:
find . -name "* *" -type d | rename 's/ /_/g' # do the directories first
find . -name "* *" -type f | rename 's/ /_/g'
ユルゲンに基づく /usr/bin/rename
の "Revision 1.5 1998/12/18 16:16:31 rmb1" バージョンを使用して、単一の境界でファイルとディレクトリの複数のレイヤーを処理できます。 (Perl スクリプト):
find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;
私が使用するもの:
for f in *\ *; do mv "$f" "${f// /_}"; done
再帰的ではありませんが、非常に高速でシンプルです。ここの誰かが再帰的に更新できると確信しています.
${f// /_}
一部は、bash のパラメーター展開メカニズムを利用して、パラメーター内のパターンを指定された文字列に置き換えます。関連する構文は ${parameter/pattern/string}
です。 .参照:https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html または 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
ディレクトリのことを考えていなかったので、最初はうまくいきませんでした.