#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