【问题标题】:Find all files except those which is under version control systems (git or SVN)查找除版本控制系统(git 或 SVN)下的文件之外的所有文件
【发布时间】:2012-09-14 07:25:14
【问题描述】:

我必须在我的计算机上找到所有文件,除了那些在版本控制系统(git 或 SVN)下的文件。我不仅不必查找 VCS 的元文件,还不必查找工作副本中的所有文件,因此我无法使用类似

find . -type f \! -path \*/\.svn/\*;

请帮帮我,因为我对此一无所知。
谢谢!

【问题讨论】:

    标签: git bash svn shell unix


    【解决方案1】:

    如果当前工作目录 (CWD) 不是存储库,我猜 git statussvn 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等。怎么了?
    • 问题是您没有权限列出这些目录中的文件。根据列出的文件,您似乎正在运行 Mac。尝试在find 之前添加sudo 并输入您的密码,您应该没问题。但是,使用sudo 时要小心,因为它会授予您正在运行的程序管理员的访问权限!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多