我尝试过很多关于重命名对象的事情。我发现以下命令被证明是正确的:[/ p>
for f in *; do mv "$f" "`echo $f | tr ‘:’ '_'`"; done
不幸的是,这个命令不起作用recursivley。
我的目标"此命令的文件夹是share / Volumes / Share / Work \ Data /。有没有"简单"递归的方法吗?
丹
答案 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