我需要递归地从SVN存储库中删除不必要的文件,我有以下批处理文件来做到这一点:防止命令“DEL/S”进入一个文件夹
@echo on
del /s ~*.*
del /s *.~*
del /s Thumbs.db
然而,这也删除.svn /子文件夹下的条目。有什么办法可以防止在.svn /文件夹下执行这个命令,这样它就不会搞砸了吗?
在此先感谢!
编辑:使用Bash(cygwin)的解决方案也适用于我,因为我只需要这样做一次。
我需要递归地从SVN存储库中删除不必要的文件,我有以下批处理文件来做到这一点:防止命令“DEL/S”进入一个文件夹
@echo on
del /s ~*.*
del /s *.~*
del /s Thumbs.db
然而,这也删除.svn /子文件夹下的条目。有什么办法可以防止在.svn /文件夹下执行这个命令,这样它就不会搞砸了吗?
在此先感谢!
编辑:使用Bash(cygwin)的解决方案也适用于我,因为我只需要这样做一次。
不知道如何做到这一点的一个批处理文件,不过Bash的解决方案就是:
find . -name .svn -prune -o -print | egrep "/~.*|/[^/].*\.~.*$|/Thumbs.db" | xargs rm -f
虽然我建议先重定向到一个文件,然后目测文件。
第一个命令查找不在.svn子目录中的所有内容。第二个命令选择要删除的东西,第三个删除它们。
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 ..
)
)
优秀!谢谢! – jzuniga 2010-06-09 17:24:18
谢谢!但是,xargs rm -f不起作用,它不会删除文件 – jzuniga 2010-06-09 16:11:33
如果删除xargs,您会得到一个文件列表吗? xargs只接受标准输入并为传递给它的程序创建参数。上面的正则表达式可能不正确,你可能需要稍微调整一下。 – 2010-06-12 12:11:52