我有一个文件夹集合,我想用空格替换文件夹名称中的所有下划线。
有什么想法吗?
由于
答案 0 :(得分:2)
(bash)这将找到当前目录中或下面的所有文件夹,名称中带有下划线,并按照您的提及重命名:
for d in $(find . -name '*_*' -type d) ; do
new=$(echo $d | sed -e 's/_/ /g')
mv $d $new
done
答案 1 :(得分:0)
你可以试试像
这样的东西#> ls -l | grep '^d' | awk '{oldname = $9 ; gsub(/_/, " " ,$9); print "mv " oldname " " $9 }' > temp.script
#> chmod 744 temp.script
#> ./temp.script
首先测试它:)
答案 2 :(得分:0)
您的系统是否有rename
命令可以满足您的需求?在某些系统中,它存在并且可以使用某些正则表达式来进行更改。我使用的是一个使用Perl正则表达式的版本(换句话说是一个Perl脚本):
find . -type f -name '*_*' -print0 | xargs -0 rename 's/_+/ /g'
另一方面,Linux上的标准版本相比之下往往相当微弱(而且不会做你需要的)。
请注意,如果您还要重命名目录,请在重命名任何文件之前或重命名所有文件之后执行这些操作。将它们混合起来将意味着您的重命名会在访问一个目录中的文件名时遇到问题,但是自生成文件名以来该目录已被重命名。 <{1}}作为-depth
的选项使用并不保证是安全的。