2010-06-09 70 views
4

我需要递归地从SVN存储库中删除不必要的文件,我有以下批处理文件来做到这一点:防止命令“DEL/S”进入一个文件夹

@echo on 
del /s ~*.* 
del /s *.~* 
del /s Thumbs.db 

然而,这也删除.svn /子文件夹下的条目。有什么办法可以防止在.svn /文件夹下执行这个命令,这样它就不会搞砸了吗?

在此先感谢!

编辑:使用Bash(cygwin)的解决方案也适用于我,因为我只需要这样做一次。

回答

1

不知道如何做到这一点的一个批处理文件,不过Bash的解决方案就是:

find . -name .svn -prune -o -print | egrep "/~.*|/[^/].*\.~.*$|/Thumbs.db" | xargs rm -f 

虽然我建议先重定向到一个文件,然后目测文件。

第一个命令查找不在.svn子目录中的所有内容。第二个命令选择要删除的东西,第三个删除它们。

+0

谢谢!但是,xargs rm -f不起作用,它不会删除文件 – jzuniga 2010-06-09 16:11:33

+0

如果删除xargs,您会得到一个文件列表吗? xargs只接受标准输入并为传递给它的程序创建参数。上面的正则表达式可能不正确,你可能需要稍微调整一下。 – 2010-06-12 12:11:52

2
del ~*.* 
del *.~* 
del Thumbs.db 
for /d %%a in (*) do (
    if not "%%a" == ".svn" (
     cd %%a 
     del /s ~*.* 
     del /s *.~* 
     del /s Thumbs.db 
     cd .. 
    ) 
) 
+0

优秀!谢谢! – jzuniga 2010-06-09 17:24:18

相关问题