【发布时间】:2012-09-14 07:25:14
【问题描述】:
我必须在我的计算机上找到所有文件,除了那些在版本控制系统(git 或 SVN)下的文件。我不仅不必查找 VCS 的元文件,还不必查找工作副本中的所有文件,因此我无法使用类似
find . -type f \! -path \*/\.svn/\*;
请帮帮我,因为我对此一无所知。
谢谢!
【问题讨论】:
我必须在我的计算机上找到所有文件,除了那些在版本控制系统(git 或 SVN)下的文件。我不仅不必查找 VCS 的元文件,还不必查找工作副本中的所有文件,因此我无法使用类似
find . -type f \! -path \*/\.svn/\*;
请帮帮我,因为我对此一无所知。
谢谢!
【问题讨论】:
如果当前工作目录 (CWD) 不是存储库,我猜 git status 和 svn status 返回非零退出代码。因为我认为 find 不能抑制我将创建的 -exec 调用的输出
~/gitstatus.sh:
git status > /dev/null 2>&1
exit $?
~/svnstatus.sh:
svn status > /dev/null 2>&1
exit $?
然后通过以下命令搜索文件:
find . -type f '!' '(' -execdir bash ~/gitstatus.sh ';' -or -execdir bash ~/gitstatus.sh ';' ')'
【讨论】:
find: ./System/Library/DirectoryServices/DefaultLocalDB/Default: Permission denied find: ./System/Library/User Template: Permission denied find: ./Users/Guest/Desktop: Permission denied find: ./Users/Guest/Music: Permission denied find: ./Users/Guest/Pictures: Permission denied find: ./Users/Guest/Public/Drop Box: Permission denied等。怎么了?
find 之前添加sudo 并输入您的密码,您应该没问题。但是,使用sudo 时要小心,因为它会授予您正在运行的程序管理员的访问权限!