在当前目录的文件中搜索字符串,忽略重复项

在当前目录的文件中搜索字符串,忽略重复项

假设我想编写一行来打印与特定字符串匹配的行而不重复重复的行..我想在当前目录的文件中搜索该字符串:

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

相关内容