【问题标题】:Find files whose path doesn't contain a word查找路径不包含单词的文件
【发布时间】:2015-09-10 15:47:43
【问题描述】:

我正在尝试列出所有 .hpp 文件,但路径包含单词的文件, 例如:

find -name '*.hpp' 会给

folder1/folder2/something.hpp
folder1/folder3/something.hpp
folder1/folder4/something.hpp

我想排除文件夹 2 中的文件,以便只有这些文件:

folder1/folder3/something.hpp
folder1/folder4/something.hpp

【问题讨论】:

    标签: linux path find


    【解决方案1】:

    只需否定-path 条件:

    find -name '*.hpp' -not -path '*/folder2/*'
    

    要排除多个目录,请重复条件:

    find -name '*.hpp' -not -path '*/folder2/*' -not -path '*/folder3/*'
    

    或者在正则表达式中使用替代:

    find -name '*.hpp' -not -regex '.*/\(folder2\|folder3\)/.*' 
    

    【讨论】:

    • 谢谢,请问如何排除其他文件夹?
    • @OthmanBenchekroun:正则表达式中的点表示“任何字符”。 * 表示“重复零次或多次”。
    • 是的,这意味着它们在这里并不重要,不是吗?没有他们,我会得到我需要的东西
    • 我的意思是 '.*' 包含在 '*' 中,所以结果 '.*/\(folder2\|folder3\)/.*' 应该包含在 '*/\(folder2\|folder3\)/*'
    • @OthmanBenchekroun:不,-name 使用“模式”,而不是正则表达式。模式中的* 转换为正则表达式中的.*
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多