3
我想重新命名为“富”到“栏中的”所有嵌套目录 - 我已经试过没有快乐如下:递归目录SVN移动shell脚本
find */ -name 'foo' | xargs svn move {} 'bar' \;
感谢
我想重新命名为“富”到“栏中的”所有嵌套目录 - 我已经试过没有快乐如下:递归目录SVN移动shell脚本
find */ -name 'foo' | xargs svn move {} 'bar' \;
感谢
这将尝试将每个foo
移动到pwd
/bar并通过svn move
太多参数。这是我会做:
find . -depth -type d -name 'foo' -print | while read ; do echo svn mv $REPLY `dirname $REPLY`/bar ; done
您可以卸下echo
有它实际上执行的操作。上述工作假设您的文件名中没有空格。
你可以使用bash的使用顺序后步行到手动访问目录树:
#!/bin/bash
visit() {
local file
for file in $1/*; do
if [ -d "$file" ]; then
visit "$file";
if [[ $file =~ /foo$ ]]; then
svn move $file ${file%foo}bar;
fi
fi
done
}
if [ $# -ne 1 ]; then
exit
fi
visit $1
此代码没有任何无限循环检测,而应在简单的情况下工作。
您可能希望在'while read'之前对'find'结果进行排序--reverse。为了避免在重命名它的父对象之后重命名一个嵌套的目录**,并且在查找中还有一个'-type d'以实现良好的度量。 – 2010-06-15 14:52:37
@陈 - 很好的建议。为了解决这个问题,增加了'-depth'来处理嵌套的case和'-type d'“。 – 2010-06-15 18:24:24