Поиск строки в файлах текущего каталога, исключение дубликатов

Поиск строки в файлах текущего каталога, исключение дубликатов

Предположим, я хочу написать строку, которая выводит строки, соответствующие определенной строке, без повторения дубликатов строк. Я хочу найти эту строку в файлах текущего каталога:

grep mystring ***What to put here?** | sort | uniq

Как выполнить поиск во всех файлах текущего каталога?

решение1

find . ! -name . -prune -type f -exec cat {} + |
  grep mystring |
  LC_ALL=C sort -u

Или:

find . ! -name . -prune -type f -exec cat {} + | awk '
  /mystring/ && !seen[$0]++'

С GNU grep:

LC_ALL=C grep -hr --exclude-dir='?*' mystring | LC_ALL=C sort -u

Или с помощью zshи GNU grep:

grep -h mystring ./*(D.) | LC_ALL=C sort -u

Чтобы также выполнить рекурсивный поиск в файлах в подкаталогах:

find . -type f -exec cat {} + |
  grep mystring |
  LC_ALL=C sort -u

Или:

find . -type f -exec cat {} + | awk '
  /mystring/ && !seen[$0]++'

С GNU grep:

grep -hr mystring | LC_ALL=C sort -u

Обратите внимание, что все эти решения также просматривают скрытые файлы (и файлы внутри скрытых каталогов), но не нестандартные файлы и не будут переходить по символическим ссылкам (если только вы не используете какую-то старую версию GNU grepс -r).

Связанный контент