Найдите файл на основе содержания всего файла, не на строку

Я могу искать файлы с rexexp, который подобран против всего файла? Скажем, то, что у меня есть эти файлы:

//file1
foo
bar

//file2
bar
foo

Я хочу найти файлы тем концом с "нечто". Если я использую grep и regex foo$ это будет соответствовать обоим файлам, так как у них обоих есть строки, заканчивающиеся "нечто". Но я только хочу соответствовать второму, так как это - единственный случай, где весь файл заканчивается "нечто".

0
задан 24 February 2016 в 11:52

2 ответа

Вы могли использовать комбинацию tail и grep, например,

find . -type f -exec sh -c 'tail -n1 "$1" | grep -q "foo"' sh {} \; -print
1
ответ дан 24 July 2019 в 10:27

В жемчуге опция 0 может быть использованием для обработки файла как единственной записи.

Этот путь попытка:

perl -n0E  'say $ARGV if /foo\s*$/' file*

\s* полезно, чтобы справиться с новыми строками и подобный, обычно представлять в конце файла.

Другая подобная альтернатива (gnugrep)

grep -lzP 'foo\Z' file*
0
ответ дан 24 July 2019 в 10:27

Другие вопросы по тегам:

Похожие вопросы: