Существуют параметры find
команды для поиска файлов и каталогов соответственно -f
и -d
, но я хочу избежать написания двух find
команд и &&
или ||
между ними.
Я хочу найти файл или каталог (в зависимости от того, что найдено условно) в одной команде, можно ли объединить -d
и -f
с помощью операции ИЛИ?
решение1
Воспользуйтесь -o
опцией.
ИзнаходитьСтраница руководства (под заголовком ОПЕРАТОРЫ):
expr1 -o expr2 Or; expr2 is not evaluated if expr1 is true.
решение2
Если вы не укажете -f
ни -d
, find
то покажет все типы инодов (файлы, каталоги, устройства, ссылки и т. д.). Если вам нужны только файлы и каталоги, то используйте -o
, и, возможно, используйте экранированные скобки, если вы собираетесь использовать другие типы условий.
Например, все файлы, каталоги, ссылки и т. д., которые были изменены/созданы за последние 2 дня:
find . -iname '*blah*' -mtime -2
То же, что и выше, но только файлы и каталоги (без символических ссылок, устройств...)
find . -iname '*blah*' \( -type d -o -type f \) -mtime -2