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