我想将名为“foo”的所有嵌套目录重命名为“bar” - 我尝试了下面的内容并没有任何乐趣:
find */ -name 'foo' | xargs svn move {} 'bar' \;
由于
答案 0 :(得分:1)
这会尝试将每个foo
移动到pwd
/ bar并传递svn move
个过多的参数。这就是我要做的事情:
find . -depth -type d -name 'foo' -print | while read ; do echo svn mv $REPLY `dirname $REPLY`/bar ; done
您可以删除echo
以使其实际执行操作。上述工作假设您的文件名中没有空格。
答案 1 :(得分:1)
您可以使用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
此代码没有任何无限循环检测,但应该在简单的情况下工作。