我在文件名中有一堆“空格”的目录中有一堆文件。
如何用“空格”对所有文件名执行批量重命名,并用“_”字符replace它们。
看看其他的解决scheme,我已经尝试了以下命令w / o成功:
找 。 -name'* *'-exec rename'''_'{} +
find:重命名:没有这样的文件或目录
尝试:
$ for file in *; do [ -f "$file" ] && ( mv "$file" "$(echo $file | sed -e 's/ /_/g')" ); done
没有直接的答案,但是大多数人会以这种或那种方式错误的。 最有可能的是,他们不会使用正确的查找,如果任何文件名包含^ J,你可能会得到愚蠢的结果。
另外如果你有/许多/文件,你可能不希望你的脚本为每个条目产生sed或mv。
以下是使用基本Perl正确执行的一种方法:
find . -print0 | \ perl -e '$/="\000";' -ne '$o=$_;tr/ /_/;rename($o,$_);'
感谢您的答案。
我发现这一个class轮,做了诀窍:
for i in *\ *; do if [ -f "$i" ]; then mv "$i" ${i// /_}; fi; done