Как использовать логический ИЛИ в поиске?

В оболочке bash ls может использовать логическую ИЛИ-функциональность (конечно, я мог бы также использовать ls name1 name2 но мои истинные примеры более сложны):

 ls @(name1|name2) 

Есть ли способ сделать это, используя find ?

Моя наивная реализация:

 find . -maxdepth 1 -name @("name1"|"name2") 

не работает (он просто ничего не выводит)

  • Отобразить меню имен файлов и позволить пользователю выбрать файл, введя число
  • Лучший способ только перечислить файлы, которыми я владею
  • ZSH: `ls * (.)` Перечисляет только обычные файлы, но `ls * (/)` не перечисляет только каталоги
  • Перемещение папок использовало неправильный синтаксис и потеряло их
  • Найти файлы с 32 символами в рекурсивно в каталоге и применить команду
  • В состоянии Bash if, как проверить, существуют ли какие-либо файлы, соответствующие простому шаблону?
  • Возможно ли изменить поведение команды по умолчанию?
  • Количество строк, выводимых ls
  • 2 Solutions collect form web for “Как использовать логический ИЛИ в поиске?”

    Вы можете использовать -o для логического OR . Помните, однако, что все find предикатов имеют логические значения, поэтому вам обычно нужно группировать OR ed вместе с parens. И поскольку у parens также есть смысл для оболочки, вам также нужно будет избежать их:

     find /some/dir -maxdepth 1 \( -name '*.c' -o -name '*.h' \) -print 

    Чтобы ответить на ваш вопрос, вы можете использовать опцию -o :

      expr1 -o expr2 Or; expr2 is not evaluated if expr1 is true. expr1 -or expr2 Same as expr1 -o expr2, but not POSIX compliant. 

    как это:

     $ find . -maxdepth 1 -name "name1" -o -name "name2" ./name1 ./name2 
    Linux и Unix - лучшая ОС в мире.