Unix批量重命名文件夹(下划线到空格)

Unix批量重命名文件夹(下划线到空格),unix,Unix,我有一个文件夹集合,我想用空格替换文件夹名称中的所有下划线 有什么想法吗 谢谢(bash),这将在当前目录中或其下找到名称中带有下划线的所有文件夹,并如您所述重命名它们: for d in $(find . -name '*_*' -type d) ; do new=$(echo $d | sed -e 's/_/ /g') mv $d $new done 你可以试试类似的东西 #> ls -l | grep '^d' | awk '{oldname = $9 ; gsu

我有一个文件夹集合,我想用空格替换文件夹名称中的所有下划线

有什么想法吗

谢谢(bash),这将在当前目录中或其下找到名称中带有下划线的所有文件夹,并如您所述重命名它们:

for d in $(find . -name '*_*' -type d) ; do
    new=$(echo $d | sed -e 's/_/ /g')
    mv $d $new
done

你可以试试类似的东西

#> ls -l | grep '^d' | awk '{oldname = $9 ; gsub(/_/, " " ,$9);  print "mv " oldname " "  $9 }' > temp.script
#> chmod 744 temp.script
#> ./temp.script

当然,首先测试它:)

您的系统是否有一个
重命名
命令来满足您的需要?在某些系统上,它是存在的,并且可以使用某种正则表达式来进行更改。我使用的版本使用Perl正则表达式(换句话说,是Perl脚本):

另一方面,相比之下,Linux上的标准版本往往相当脆弱(并且不能满足您的需要)


请注意,如果也要重命名目录,请在重命名任何文件之前或重命名所有文件之后执行这些操作。将它们混合使用将意味着您的重命名在访问一个目录中的文件名时遇到问题,但该目录自文件名生成后已被重命名。即使使用
-depth
作为
查找
的选项,也不能保证安全。

我将$d和$new括在引号中,它成功了。谢谢,你确定吗?文件名中的空格可能会引起一些麻烦。Unix很好地支持它们—并非所有为Unix编写的工具都支持。对于闭门人来说:这是一个适当的问题—它询问如何编写shell脚本(程序)来执行特定任务。如果你把它作为另一个问题的重复来结束,你会得到我更多的同情。事实上,我在谷歌上找到了这个,寻找相反的任务(空格到下划线)-这对我很有用!
find . -type f -name '*_*' -print0 | xargs -0 rename 's/_+/ /g'