現在のフォルダのすべてのファイル/サブディレクトリの名前を変更するには?
スペースがあるファイルとサブディレクトリが多く、すべてのスペースを下線に変更したいとします。
File 1
File 2
File 3
Dir 1
Dir 3
に名前を変更する必要があります
File_1
File_2
File_3
Dir_1
Dir_3
ベストアンサー1
すべてのシェルで、名前にスペースを含むファイルを繰り返すことができます。 bash、ksh、zshでは、スペースを下線に置き換えるのは簡単です${VARIABLE//PATTERN/REPLACEMENT}
。
for x in *" "*; do
mv -- "$x" "${x// /_}"
done
Debian、Ubuntu、およびその派生製品ではPerlを使用できますrename
(たとえば、他のディストリビューションは異なるプログラムを提供しますが、rename
ここでは役に立ちません)。
rename 's/ /_/g' ./*
必須 zsh ソリューション:
autoload zmv
zmv '(*)' '${1// /_}'
または:
autoload zmv
zmv '*' '${f// /_}'
必須POSIXソリューション:
for x in *" "*; do
y=$(printf %s/ "$x" | tr " " "_")
mv -- "$x" "${y%/}"
done