Как найти текстовые файлы, не содержащие текст в Linux?
Как найти файлы не, содержащие какой-то текст в Linux? В основном я ищу обратный следующий
find . -print | xargs grep -iL "somestring"
Ответы
Ответ 1
Команда, которую вы цитируете, по иронии судьбы делает именно то, что вы описываете.
Проверьте его!
echo "hello" > a
echo "bye" > b
grep -iL BYE a b
Говорит только.
Я думаю, вы можете ввести в заблуждение -L и -l
find . -print | xargs grep -iL "somestring"
является обратным к
find . -print | xargs grep -iL "somestring"
Кстати, рассмотрим
find . -print0 | xargs -0 grep -iL "somestring"
Или даже
grep -IRiL "somestring" .
Ответ 2
Если вы используете скрипт "find", выполните "grep" также в папке:
[[email protected] test]# find | xargs grep -Li 1234
grep: .: Is a directory
.
./test.txt
./test2.txt
[[email protected] test]#
Используйте "grep" напрямую:
# grep -Li 1234 /root/test/*
/root/test/test2.txt
/root/test/test.txt
[[email protected] test]#
или укажите "найти" параметры "-type f"... даже если вы используете поиск, вы добавите больше времени (сначала список файлов, а затем создайте grep).
Ответ 3
Вы можете сделать это только с помощью grep (без поиска).
grep -riL "somestring" .
Это объяснение параметров, используемых на grep
-L, --files-without-match
each file processed.
-R, -r, --recursive
Recursively search subdirectories listed.
-i, --ignore-case
Perform case insensitive matching.
Если вы используете l
нижнем регистре, вы получите противоположное (файлы с совпадениями)
-l, --files-with-matches
Only the names of files containing selected lines are written