Глядя на принятый ответ, он кажется более сложным, чем должен быть. Версии GNU find
, grep
и xargs
поддерживают строки, заканчивающиеся NULL -. Это так же просто, как:
find. -type f -print0 | xargs -0 grep -l --null FIND | xargs -0 grep -l ME
Вы можете изменить команду find
для фильтрации нужных файлов, и она работает с именами файлов, содержащими любой символ; без дополнительной сложности разбора sed
. Если вы хотите продолжить обработку файлов, добавьте еще один --null
к последнемуgrep
find. -type f -print0 | xargs -0 grep -l --null FIND | xargs -0 grep -l --null ME | xargs -0 echo
И, как функция:
find_strings() {
find. -type f -print0 | xargs -0 grep -l --null "$1" | xargs -0 grep -l "$2"
}
Очевидно, используйте принятый ответ, если вы не используете версии этих инструментов GNU.
Хорошо, я сам нашел ответ.
После удаления параметра ядра quiet
появились некоторые ошибки, связанные с контекстами SELinux.
Проблема заключалась в selinux
модуле ядра.
Я запустил систему с параметром ядра selinux=0
в grub, чтобы предотвратить загрузку selinux, и это сработало!