Я подозреваю, что SElinux является бэкдором, и я хочу мешать ему работать над моей системой.
Если Вы подозреваете, что SElinux является черным ходом, то у Вас есть более серьезная проблема на Ваших руках, чем просто отключение ее функциональности.
SElinux является на самом деле базовым компонентом в самом Linux; это - часть восходящего дерева "магистрали", означая, что это интегрировалось в основной исходный код Linux в течение прошлых 10 лет. Если это - действительно, бэкдор, то это - бэкдор, который был помещен там самим Linus Torvalds, который лично утвердил его включение в 2003.
И если, поэтому, Torvalds и все другие базовые специалисты по обслуживанию Linux готовы включать закулисное программное обеспечение в Linux, Вы не можете доверять ни одному коду, который они производят.
Так, единственный способ решить проблему, которую Вы предложили, состоит в том, чтобы переключиться на альтернативную ОС полностью, BSD, например.
Лучше использовать find
и передать команду оболочки -exec
:
find /path/to/files -type f -exec sh -c 'for file do
egrep -iq "déni|deni" "$file" && egrep -li "arthur" "$file"
done' sh {} +
. Это будет работать с именами файлов, содержащими пробелы.
Вскрытие команды оболочки:
egrep -iq "déni|deni" "$file" && egrep -li "arthur" "$file"
Вызов egrep -iq "déni | deni" "$ file"
вернет true , если шаблон совпадает. Таким образом, он выполнит egrep -li "arthur" "$ file"
, который выведет список файлов, если эта команда соответствует указанному шаблону.
На самом деле вам даже не нужна оболочка: предикаты
find /path/to/files -type f -exec egrep -iq "déni|deni" {} \; \
-exec egrep -li "arthur" {} \;
( -exec
с терминатором ;
также могут использоваться как условия (в зависимости от статуса выхода выполненной команды)).
С помощью GNU grep вы можете использовать параметр -Z
, чтобы обнулить разделение имен файлов перед подключением к xargs
:
egrep -lirZ 'déni|deni' /path/to/files/ | xargs -0 egrep -li 'arthur'