私は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
。になります。