Я пытаюсь проверить наличие нескольких файлов, не зная заранее, где находятся файлы. Итак, я подумал, find
что это де-факто утилита для этого ... Она работает, как и ожидалось, но проблема в том, что она не подтверждает отсутствие файлов, то есть, если файл не существует в каталоге поиска тогда, как вы ожидаете, это не будет показано в результатах.
Я думаю, это нормально, так как find
команда предназначена для поиска файлов, которые на самом деле существуют в первую очередь (d'oh). Но мне интересно, есть ли у команды способ find
вернуть сообщение типа «Файл не найден» или тому подобное, чтобы сообщить, что файла нет, вместо того, чтобы молча провалиться (или преуспеть).
Я подумал, что, возможно, я мог бы обойти проблему, используя find
код возврата путем запроса $?
, но даже когда файл не найден, код возврата есть 0
.
Просто пример того, что у меня есть ...
find . -name foo.sh
find . -name bar.sh
и что он возвращает в случае, если единственный файл там foo.sh
:
./directory/foo.sh
То, что я хотел бы получить:
./directory/foo.sh
bar.sh not found
Кто-нибудь знает find
флаг или любой другой обходной путь, который я могу использовать?
Спасибо!
find . -name foo | grep \/ || echo "File not found"
. Спасибо!Я не думаю, что у find есть возможность сказать « то, что вы искали, не было найдено ».
Вы можете посчитать количество строк, возвращаемых функцией find, и, если оно равно 0, вывести сообщение «not found». Что-то вроде:
Он выведет вывод команды find, если были какие-либо результаты, или « foo.sh not found », если результатов не найдено.
источник
find
, но в этом случае я просто хотел простой однострочной, просто чтобы знать, что файла нет. +1 в любом случае, потому что, как я уже сказал, это хорошая идея. Спасибо!