我想要递归地重命名文件夹/目录的名称,并在SO上找到了这个解决方案。然而,这个命令没有效果。 find . -type f -exec rename 's/old/new/' '{}' \; 这是一个正确的命令吗?
find . -depth -name '*a_*' -execdir bash -c 'mv "$0" "${0//a_/b_}"' {} \; < p > -depth 开关很重要,因为它可以在处理目录本身之前处理目录内容!否则你会遇到问题:)。 对于文件名带有空格或其他奇怪符号的情况完全安全。
f
代表文件。d
代表目录(在Unix环境中,“文件夹”不是一个常用的术语)。 - Matfind . -type d -exec echo rename 's/a_/b_/' '{}' \;
输出是否符合您的预期?如果是,请将其导入到shell中:P - Ahmed Masudfor f in $( find . -type f -name "*a*" ); do mv $f $(basename $f | sed "s/a/b/") ; done
- user3442743