Я хотел бы найти файл с определенным именем по одному из двух путей. Вторая содержит неизвестную папку

#unix #search #find #command #line

Вопрос:

Я пытаюсь найти файл: logfile.log

Этот файл либо будет находиться в:

/home/dir01/dir02

Или:

/home/something/dir01/dir02

Проблема в том, что каталог «что-то» может иметь любое имя, или он может вообще не существовать

Из домашнего каталога я попытался:

find */dir01/dir02 -name logfile.log

но это работает только тогда, когда в каталоге что-то существует

Мне интересно, возможно ли это в одной команде достаточно эффективным способом.

Поиск всех файлов из /home кажется пустой тратой времени, потому что я уже знаю о двух подкаталогах, в которых он должен находиться.

Большое спасибо!

Комментарии:

1. Какую оболочку вы используете?

Ответ №1:

Поиск всех файлов из /home кажется пустой тратой времени, потому что я уже знаю о двух подкаталогах, в которых он должен находиться.

Действительно, это правда. Простой подход состоит в том, чтобы проверить существование одного до другого и действовать только в случае неудачи:

 for file in dir01/dir02/logfile.log */dir01/dir02/logfile.log; do [ -e $file ] amp;amp; break; done