Два способа (помимо с использованием-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
, как показывает Джефф. Тем не менее я оставляю их здесь в качестве примеров, так как они могут быть адаптированы для других целей.