我有这个目录树:
/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-test/two/def/one
/tmp/find-test2/one
/tmp/find-test2/two/abc/one
/tmp/find-test2/two/def/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
switch 以便我可以匹配具有更多条件的路径,但仍然只有父路径是所需的结果。
我正在使用 sh 和 bash。