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

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

 ls @(name1|name2) 

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

  • Использование dircolors, как изменить цвет моих папок subversion
  • Разрешения для файлов Sticky & User Execution
  • Пакетное переименование папок с помощью одной команды bash
  • Подавление печати всей строки с помощью ls -l
  • grep со специальными выражениями
  • Зацикливание файлов с пробелами в именах?
  • Моя наивная реализация:

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

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

  • Каков наилучший способ подсчета количества файлов в каталоге?
  • В чем смысл ls -f (или, почему это висит?)
  • Почему ls и hexdump не согласны с моим размером файла?
  • Отображение как ls информации, так и точек монтирования каталога?
  • Как ls без рекурсивного
  • Для файлов Rsync, в которых разрешено отклонение
  • 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 - лучшая ОС в мире.