2014-12-27 3 views
1

У меня есть сотни файлов * .txt в папке, а некоторые из них отсутствуют «author» ярлык из-за невозврата, теперь я хочу найти их без ручной проверки одного одним. Кроме того, я думаю, что было бы лучше ограничить поиск только файлами * .txt (т. Е. Пропустить другие типы файлов в одной папке).Поиск файлов без определенной строки в текущем каталоге

ожидать выход:

001.txt 
004.txt 
008.txt 
009.txt 

Я знаю, что это может быть связано с «grep» или командой «find», и я прошел через --help, но до сих пор не имеют много идей. Что я могу понять только, чтобы отфильтровать все * .txt файлы в папке

ls -ltr | grep txt 
001.txt 
002.txt 
003.txt 
004.txt 
005.txt 
006.txt 
007.txt 
008.txt 
009.txt 
010.txt 

ответ

0

Попробуйте grep -Rl 'author' --include='*.txt' .

документы:

-L, --files-without-match print only names of FILEs containing no match 
-R, -r, --recursive  equivalent to --directories=recurse 
    --include=FILE_PATTERN search only files that match FILE_PATTERN 
+0

Это работает хорошо для меня! –

1

Попробуйте эту комбинацию grep и find

find -iname "*.txt" -exec grep 'author' {} \; 

или

find -iname "*.txt" -exec grep -l 'author' {} \; 

-l, --files-with-matches 
       Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning 
       will stop on the first match. (-l is specified by POSIX.) 
+0

Второй - это то, что мне нужно. Это классная команда, спасибо! –

+0

Вторая команда возвращает только имя файла, например, имя файла сопоставленного содержимого – Kalanidhi

Смежные вопросы