macOS make命令以递归方式工作

时间:2017-05-01 17:06:40

标签: bash macos recursion

我尝试过很多关于重命名对象的事情。我发现以下命令被证明是正确的:[/ p>

for f in *; do mv "$f" "`echo $f | tr ‘:’ '_'`"; done

不幸的是,这个命令不起作用recursivley。

我的目标"此命令的文件夹是share / Volumes / Share / Work \ Data /。有没有"简单"递归的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以将List与bash替换结合使用:

find

上面的命令将执行移动操作的“干运行”。如果您确信文件是按照您的意图命名,则将find . -name "*:*" -exec bash -c 'echo "$0" "${0//:/_}"' {} \; 替换为echo以实际移动/重命名文件。

答案 1 :(得分:1)

使用find .代替*,它只列出当前目录中的文件,它通过目录进行递归。例如:

for f in `find .`; do mv "$f" "`echo $f | tr ‘:’ '_'`"; done