Linux 和 SVN:如何删除所有版本文件但保留目录结构并忽略 .svn 目录?

Linux 和 SVN:如何删除所有版本文件但保留目录结构并忽略 .svn 目录?

我想从我的存储库中删除所有版本控制文件,但保留版本控制目录结构。显然,我想保留所有 .svn 目录不变。

换句话说,我想完全清空工作副本的目录结构,而不损害目录结构本身。

例如,从此结构中删除文件:

dir/
    .svn/
        [files]
    svsubdir1/
        file1
        .svn/
            [files]
    subdir2/
        file2
        file3
        file4
        .svn/
            [files]
        subsubdir1/
            file5
            .svn/
                [files]

应导致:

dir/
    .svn/
        [files]
    svsubdir1/
        .svn/
            [files]
    subdir2/
        .svn/
            [files]
        subsubdir1/
            .svn/
                [files]

我正在寻找某种find命令或其他东西来实现这一点,但我在构建命令时遇到了麻烦。谢谢您的帮助!

答案1

find dir/ -path '*/.svn' -prune -o -type f -print

应该符合要求(主要来自 find 的手册页-path)。将其通过管道传输到 less 并检查。它所做的是首先查找(路径以 .svn 结尾,并且不递归到(修剪)此目录)或(如果是文件,则打印它)。

如果看起来不错,则将其更改为

find dir/ -path '*/.svn' -prune -o -type f -exec rm {} +

+ 版本将所有文件粘贴到一个 rm 命令中。如果您比较谨慎,请先备份树 ( cp -a dir/ otherdir/)。

答案2

查找 . -not -path "*/.svn/*" -and -type f -and -exec /bin/rm '{}' \;

应该可以奏效。

相关内容