在目前目錄的檔案中搜尋字串,忽略重複項

在目前目錄的檔案中搜尋字串,忽略重複項

假設我想編寫一行來列印與特定字串匹配的行而不重複重複的行..我想在當前目錄的檔案中搜尋該字串:

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

或與zshGNU一起使用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

相關內容