Как я могу выполнить поиск "или" с помощью find?

Не лучшее решение, но попробуйте отключить «Использовать аппаратное ускорение, если оно доступно» в дополнительных настройках Chromium. Если вы нашли лучшее решение, пожалуйста, дайте мне знать.

У меня те же проблемы уже несколько недель. Это не только Google Maps в Chromium, но и мои виртуальные машины Virtual Box с 3D-ускорением (, которые случайным образом зависают через 10 -30 минут ). Мое предположение :глючит драйвер видеокарты (Radeon R9 380 / amdgpu ).

2
25.01.2019, 00:18
2 ответа

Пока я набирал этот вопрос, мне пришло в голову, что find по умолчанию использует подстановку, а не регулярное выражение. Но я уверен, что есть способ использовать регулярное выражение!

Конечно... Мне пришлось изменить тип регулярного выражения, чтобы использовать posix -extension, но это дало мне то, что я хотел.

find. -regextype posix-extended -regex ".*pem|.*crt"

Капла!

1
27.01.2020, 21:49
Оператор «или»

find— это-o:

find. -name "*.pem" -o -name "*.crt"

Это короткое -замыкание, т.е. вторая часть будет оцениваться только в том случае, если первая часть ложна :файл, соответствующий *.pem, не будет проверяться *.crt.

-oимеет более низкий приоритет, чем «и», явный(-a)или неявный; если вы комбинируете операторы, вам может понадобиться заключить часть «или» в круглые скобки:

find. \( -name "*.pem" -o -name "*.crt" \) -print

В моих тестах это значительно быстрее, чем использование регулярного выражения, как и следовало ожидать, (регулярные выражения дороже тестировать, чем подстановочные значения, и -regexпроверяется полный путь, а не только имя файла, как -name] делает ).

15
27.01.2020, 21:49

Теги

Похожие вопросы