Мне нужно найти изображение, скажем ABC.jpg, которое, как я знаю, будет программно помещено в каталог с именем ABC_MPSC. Я пробовал:
cd /
find . -name "ABC_MPSC/ABC.jpg"
Но это ничего не возвращает (я на самом деле знаю, где именно тот, который я ищу, поэтому я знаю, что он существует). Есть ли команда поиска, которая может позволить мне не искать вручную?
locate
, который должен быть значительно быстрее, но работает только в том случае, если файл уже существовал на моментupdatedb
последнего запуска.Ответы:
Здесь есть
-path
предикат, который полезен:POSIX описание для этого предиката:
Причина, по которой вы
-name "ABC_MPSC/ABC.jpg"
потерпели неудачу, заключается в том, что-name
предикат:Другими словами,
-name
никогда не видит каталог с текущим именем файла, только само базовое имя файла (например, ABC.jpg).источник
Два способа (кроме использования
-path
):Найдите каталог, затем найдите файл:
Это зависит от
find
реализации для расширения{}
до текущего имени пути найденного каталога, даже если он соединен с/ABC.jpg
(это не требуется ). Это также может быть написано какНайдите файл, затем проверьте его имя в родительском каталоге:
Обе эти альтернативы будут медленнее, чем использование
-path
в пути, как показывает Джефф. Я оставляю их здесь в качестве примеров, тем не менее, они могут быть адаптированы для других вещей.источник