我有这个目录树:
/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 ...
使用-prune
。我用您的命令复制了目录树,并用-prune
发出了命令,结果是: