递归目录svn移动shell脚本

时间:2010-06-15 14:31:55

标签: svn bash

我想将名为“foo”的所有嵌套目录重命名为“bar” - 我尝试了下面的内容并没有任何乐趣:

find */ -name 'foo' | xargs svn move {} 'bar' \;

由于

2 个答案:

答案 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

此代码没有任何无限循环检测,但应该在简单的情况下工作。