Подтвердить что ты не робот

Как найти текстовые файлы, не содержащие текст в Linux?

Как найти файлы не, содержащие какой-то текст в Linux? В основном я ищу обратный следующий

find . -print | xargs grep -iL "somestring"
4b9b3361

Ответ 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