find: Что значит «-a» иметь более высокий приоритет, чем «-o»?

Страница man для поиска gnu:

Обратите внимание, что -a, если указано неявно (например, двумя тестами, которые появляются без явного оператора между ними) или явно имеет более высокий приоритет, чем -o. Это значит, что
find . -name afile -o -name bfile -print
никогда не будет печатать файл.

Я предполагаю, что приведенное выше выражение эквивалентно:

 find . -name afile -o -name bfile -a -print 

Мой вопрос: как это выражение работает? и почему afile никогда не будет напечатан?

2 Solutions collect form web for “find: Что значит «-a» иметь более высокий приоритет, чем «-o»?”

Операторы -and / -a являются логическим оператором AND . Их не нужно указывать, поскольку они подразумеваются сопоставлением двух выражений.

И да, он не будет печатать afile пока вы используете find . -name afile -o -name bfile -a -print find . -name afile -o -name bfile -a -print поскольку оператор find . -name afile -o -name bfile -a -print имеет более высокий приоритет, чем оператор OR -or / -o . Если вы хотите, чтобы afile был напечатан, у вас есть два варианта:

Первый вариант:

Как отметил @malo, запустив find . \( -name afile -o -name bfile \) -a -print find . \( -name afile -o -name bfile \) -a -print вы можете напечатать afile так как скобки имеют наивысший приоритет в командах «Найти» как в версиях GNU, так и в BSD.

Второй вариант:

Не передавая опцию -print . Так оно и будет find . -name afile -o -name bfile find . -name afile -o -name bfile и причина в том, что нет ничего с более высоким приоритетом, чем -o .

Вы должны использовать круглые скобки, поскольку они имеют более высокий приоритет, чем -a :

 find . \( -name afile -o -name bfile \) -a -print 
  • Изменение имени файла с нижнего регистра на верхний регистр рекурсивно
  • Как я могу найти все файлы ascii в одном каталоге, в котором есть слово «рубашка»? Начиная с корня
  • Linux: найдет | xargs grep имеют ограничения?
  • получить все имена файлов в подкаталогах
  • Где текущие обои хранятся в Kali Linux?
  • Найти «.git» dirs, но игнорировать некоторые пути; или как работает `find -not`
  • Как найти самый большой размер файла в большой директории
  • Почему моя находка не рекурсивна?
  • Какую цель делает минус (-) в `find -! -exec` служить?
  • Чтобы найти размер некоторой группы файлов
  • Область переменной в нескольких трубах
  • Linux и Unix - лучшая ОС в мире.