我想从我的存储库中删除所有版本控制文件,但保留版本控制目录结构。显然,我想保留所有 .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 '{}' \;
应该可以奏效。