在与Linux中特定模式匹配的所有子文件夹中搜索文件

时间:2019-01-14 08:40:35

标签: linux bash shell

我有一个目录树,如下所示。 换句话说,根目录包含多个具有任意名称的子目录。每个文件夹可能包含两个文件夹:“确定”和“不确定”。这些文件夹包含归类为“快乐”或“悲伤”的图像,这由其名称反映出来。

root/
    dir0/
        OK/
            img_happy_001.png
            img_happy_002.png
            img_sad_001.png
            ...
        NotOK/
            img_happy_103.png
            img_happy_104.png
            img_sad_72.png
            ...
    dir1/
        OK/
            img_happy_501.png
            img_sad_233.png
            ...
        NotOK/
            img_happy_703.png
            img_happy_704.png
            img_sad_298.png
            ...
    ...

通过

我可以轻松找到所有归类为“快乐”的图像。
find . -name "*happy*.png"

但是,我想找到“确定”目录中所有归类为“快乐”的图像。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

我使用

获得了预期的结果
find . -type d -name "OK" -exec find {} -name "*happy*" \; 

答案 1 :(得分:1)

您可以简单地将find中的结果通过管道传递到grep:

find . -name "*happy*.png" | grep -v NotOK

grep命令将过滤find中不包含NotOK的结果。

或者,您可以在find中查看--whole-name选项。

我相信您将需要以下内容:

find . -name "*happy*.png" -wholename "\*/OK\*"