Bash 递归重命名文件夹/目录

Bash 递归重命名文件夹/目录,bash,exec,rename,Bash,Exec,Rename,我想递归地重命名文件夹/目录名,并在上面找到。但是,此命令无效 find . -type f -exec rename 's/old/new/' '{}' \; 这是正确的命令吗 find . -depth -name '*a_*' -execdir bash -c 'mv "$0" "${0//a_/b_}"' {} \; -depth开关非常重要,因此在处理目录内容之前,先处理目录内容!否则您将遇到问题:) 对于带有空格或其他有趣符号的文件名,100%安全。f用于文件d对于目录(文件夹不

我想递归地重命名文件夹/目录名,并在上面找到。但是,此命令无效

find . -type f -exec rename 's/old/new/' '{}' \;
这是正确的命令吗

find . -depth -name '*a_*' -execdir bash -c 'mv "$0" "${0//a_/b_}"' {} \;
-depth
开关非常重要,因此在处理目录内容之前,先处理目录内容!否则您将遇到问题
:)


对于带有空格或其他有趣符号的文件名,100%安全。

f
用于文件
d
对于目录(文件夹不是Unix-y上下文中常用的术语),在没有exec部分的情况下运行find是否有任何作用?检查shell脚本是否工作的一种方法是回显命令。例如:(注意,{}不在“”)
find-键入d-exec echo重命名为's/a\/b\/'{}'\输出是否与您期望的一样?如果是这样的话,就把它通过管道传输到shell:p只需在$(find.-typef-name“*a*”)中为f使用一个循环
;do mv$f$(基本名称$f | sed“s/a/b/”);完成
@Jidder:仍然无效。你测试过了吗?是的。这是一个更简单的解决方案。我会清理原来的帖子