Linux CLI查找目录路径而没有其子级-结果仅是父路径

问题描述 投票:0回答:1

我有这个目录树:

/tmp/find-test/
├── one
│   ├── abc
│   │   ├── one
│   │   └── two
│   └── def
│       ├── one
│       └── two
└── two
    ├── abc
    │   ├── one
    │   └── two
    └── def
        ├── one
        └── two

与find-test2相同

/tmp/find-test2/
├── one
│   ├── abc
│   │   ├── one
│   │   └── two
│   └── def
│       ├── one
│       └── two
└── two
    ├── abc
    │   ├── one
    │   └── two
    └── def
        ├── one
        └── two

如果我发出:

find /tmp -ipath "*find-test*" -type d

我得到:

/tmp/find-test
/tmp/find-test/two
/tmp/find-test/two/def
/tmp/find-test/two/def/two
/tmp/find-test/two/def/one
...
/tmp/find-test2
/tmp/find-test2/two
/tmp/find-test2/two/def
/tmp/find-test2/two/def/two
/tmp/find-test2/two/def/one
...

但是我想得到的结果是只有父母的父母没有孩子。所需的结果应该只是这两个父路径:

/tmp/find-test
/tmp/find-test2

同样,如果我发出命令:

find /tmp -ipath "*one*" -type d

我只想得到:

/tmp/find-test/one
/tmp/find-test/two/abc/one
/tmp/find-test2/one
/tmp/find-test2/two/abc/one

请注意,例如:

/tmp/find-test/one/abc/one

因为它已经被持有

/tmp/find-test/one

复制目录树的脚本:

mkdir -p /tmp/find-test1/{one,two}/{abc,def}/{one,two}
mkdir -p /tmp/find-test2/{one,two}/{abc,def}/{one,two}

并查找命令:

find /tmp -ipath "*find-test*" -type d
find /tmp -ipath "*one*" -type d

我想问一下如何使用find命令获得只包含与该模式匹配的父路径的所需结果。

我需要使用-ipath开关,以便我可以将路径与更多条件进行匹配,但仍然仅需要父路径。

我正在使用sh和bash。

我有此目录树:/ tmp / find-test /├──一个│──├──abc│││├──一│││└──两个│└──def│├──一个│└──两个└──两个├──abc│├──一个│──└──两个└──def ...

linux command-line-interface path-finding gnu-findutils
1个回答
1
投票

使用-prune。我用您的命令复制了目录树,并用-prune发出了命令,结果是:

© www.soinside.com 2019 - 2024. All rights reserved.