Svn 命令行递归删除匹配的文件和目录

Svn 命令行递归删除匹配的文件和目录,svn,command-line,file,recursion,dos,Svn,Command Line,File,Recursion,Dos,如何递归删除符合特定模式的所有文件和目录?e、 g.删除所有“.svn”目录及其包含的文件 (仅限DOS)在*nix或Cygwin上: find -name .svn -print0 | xargs -0 rm -rf 像这样的东西可能会奏效,但当然要小心 find . -name ".svn" -exec rm -rf {} \; 首先尝试以下方法进行试运行: find . -name ".*" -exec echo {} \; 请注意,空大括号将用文件名填充,转义分号将结束执行的命令(

如何递归删除符合特定模式的所有文件和目录?e、 g.删除所有“.svn”目录及其包含的文件

(仅限DOS)

在*nix或Cygwin上:

find -name .svn -print0 | xargs -0 rm -rf

像这样的东西可能会奏效,但当然要小心

find . -name ".svn" -exec rm -rf {} \;
首先尝试以下方法进行试运行:

find . -name ".*" -exec echo {} \;

请注意,空大括号将用文件名填充,转义分号将结束执行的命令(从“-exec”之后开始)。

这是Unix还是Windows?在Unix上,一个简单的解决方案是

find . -name '.svn' -type d | xargs rm -rf
这将递归搜索层次结构中从“.”(当前目录)开始的所有目录(-type d),并查找名称为“.svn”的目录;然后将找到的目录列表馈送到rm-rf以进行删除

如果你想试试,试试看

find . -name '.svn' -type d | xargs echo

这将为您提供一个将被递归删除的所有目录的列表。

如果您的文件处于subversion中,则从存储库中进行导出将为您提供一个目录树,其中.svn文件和任何其他积垢将被删除。

因为您正在寻找DOS解决方案,上周的帖子几乎一模一样,大家的共识是:

对于/d/r.%如果存在,则在(.svn)do@ %d“rd/s/q”%d“

对于/f“usebackq”%d in(“目录svn /ad/b/s“)执行rd/s/q“%d”

实际上,SVN还为您提供了导出工作目录的选项,而不导出.SVN/\u SVN目录

三年后的回忆:
我认为,人们最终需要递归删除.svn/_svn文件夹的原因是,他们直接将本地工作副本复制到了一个新位置,以便将修改后的版本与干净的导出进行文件夹比较,即在修改后的本地工作副本出现问题之后。(至少这就是我需要它的原因。如果可能的话,只使用“svn导出”肯定更容易/更快。)

如果您想复制它而不导出并从项目中删除.svn,您应该使用XCOPY中的/EXCLUDE选项

像这样:

xcopy /S/Q/EXCLUDE:svn.excludelist [path_from] [path_to\]
观察[路径到]上的“\”(反斜杠)。它确定它是一个输出目录,所以xcopy不会质疑它是一个文件还是一个目录

svn.excludelist是一个文本文件,其中包含要在副本上忽略的模式,这些模式由行分隔

例如:

.svn
.svn\
\.svn\
.obj
.o
.lib
\src\

等等……

这对我来说非常有效。谢谢我需要删除所有“CVS”目录,所以我运行了一个查找-名称“CVS”-exec rm-rf{}\;“实际上,很明显,OrtoiseSVN还提供了导出工作目录而不使用.svn/_svn目录的选项。”我相信这是svn本身(
svn export
)的一个功能,不仅仅是OrtoiseSVN,所以任何其他客户机也可以这样做。这很好!Windows资源管理器并不总是删除.svn内容。如果我想使用此命令递归删除文件名,请尝试本文档中“我必须修改的内容”中建议的硬核DOS变体?目前这项工作只针对Folders我不止一次需要核取所有.svn目录,因为TortoiseSvn会阻塞本地存储库,这通常是由于应用程序在运行中崩溃,用户试图以奇怪的方式进行分支,或者用户错误地恢复或恢复。我投了赞成票,因为我在Win32上寻找相同的问题,但安装了gnutils——所以这对我来说非常有效。伙计,纯DOS太疯狂了!升级投票-我需要一个基于unix的解决方案来摆脱糟糕的eclipse.project和.settings文件。谢谢DDOWN投票错误使用
rm
+
xargs
+
find
。在这种情况下,通常应该使用
-print0
NUL
终止,否则这只是一场等待发生的灾难。@Meltemi已经有一段时间了,但是1)这个问题需要一个通用的解决方案,“.svn”只是一个例子,2)*nix文件名可以包含几乎任何内容,除了
NULL
字节和正斜杠。对于这一点,空格是有害的,例如名称中带有空格字符的目录在层次结构中的某个位置命名为
foobar
,在当前目录中命名为
bar
。然后搜索
foo*
,它将
some/path/foo-bar
馈送到
rm
,第一次自动失败并删除
bar
。请参阅下面greyfade的答案,或者使用GNU find.ok的
-delete
,开始有意义了。我今天需要做一些类似的事情,不知道
-print0
-0
标志意味着什么,而且很难找到文档。在Mac电脑上,很多(大多数?)文件/目录中都有空格符……所以你的评论激起了我的好奇心#FunWithUnix请注意,导出的版本将不包含工作目录中可能存在的任何未限制更改(为此,您需要提交然后导出),在此处仅对适当的
查找
+
rm
进行升级投票。