我需要找到一个图像,例如 ABC.jpg,我知道该图像会以编程方式放入名为 ABC_MPSC 的目录中。我试过了:
cd /
find . -name "ABC_MPSC/ABC.jpg"
但这不会返回任何内容(我实际上知道我正在搜索的特定内容在哪里,所以我知道它存在)。有没有一个 find 命令可以让我不必手动搜索?
答案1
答案2
两种方式(除了使用-path
):
查找目录,然后检测文件:
find / -type d -name 'ABC_MPSC' -exec test -f {}/ABC.jpg \; -print
这依赖于
find
扩展{}
到找到的目录的当前路径名的实现,即使它与/ABC.jpg
(它不是必需的要做到这一点)。也可以写成find / -type d -name 'ABC_MPSC' \ -exec sh -c 'test -f "$1"/ABC.jpg' sh {} \; -print
查找该文件,然后检查其父目录名称:
find / -type f -name 'ABC.jpg' -exec sh -c ' case $(dirname "$1") in */ABC_MPSC) exit 0 ;; *) exit 1 esac' sh {} \; -print
-path
这两种替代方案都会比杰夫展示的方式慢。尽管如此,我还是将它们留在这里作为示例,因为它们可能适用于其他用途。