grepを使用して、ディレクトリ(引数として提供されている)またはそのサブディレクトリの拡張子が.txtのファイルの内容のみを表示します。

grepを使用して、ディレクトリ(引数として提供されている)またはそのサブディレクトリの拡張子が.txtのファイルの内容のみを表示します。

私はfindを使ってこれをしました。

find 'directory' -type f -name "*.txt" -print0 | xargs -0 cat 

    

grepを使ってこれを行う方法がわかりません。何千回も試しました。

答え1

少なくともGNU grepを使用してください。 (質問にタグを付けてから実装したものかもしれません。)Linux)、この--include オプションを使用してglobが検索するファイルを制限できます。これを空のパターンと組み合わせてシミュレートしますcat

grep -hr --include='*.txt' '' directory

-h一致する結果から、ファイル名のデフォルトのプレフィックスをドラッグします。

答え2

ファイルの内容を表示するには、空の正規grep表現grep "" file.txtまたは「行開始」正規表現を検索しますgrep ^ file.txt

私の理解は、ディレクトリがパラメータとして提供されることです。このような場合:

grep ^ $(find $1 -name '*.txt')

または

find $1 -name '*.txt' -exec grep ^ {} \;

両方のソリューションの問題は、彼らが表示することですみんな代わりにテキストファイルfile"という質問が必要です。最初の回避策は、複数のテキストファイルが見つかった場合はテキストファイルの名前も印刷しますxargs。になります。

関連情報