重複した行を繰り返さずに特定の文字列に一致する行を印刷する行を作成したいとします。現在のディレクトリのファイルからその文字列を検索したいと思います。
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
。