パターンに一致する行を表示するために、次のコマンドを実行しています。
./files/ -name "*.txt" -print0 xargs -0 grep "5|20150507" 検索
出力は次のとおりです
./files/N1.942_0000.txt:78787878|13|5|20150507221152 ./files/N1.942_0000.txt:78787878|13|5|20150507221 22121 2 |13| 5 | 20150507222004./files/N1.810_0000.txt:8892716618|13|5|20150507215150./files/N1.442_0001.txt:8648648542 1 .442_0001.txt:8648648648 | 13 | 5 |20150507221638 ./files/N1.442_0001.txt:7406079160|13|5|20150507221941
しかし、以下のようにファイル名なしで出力したいと思います。
86486 48648|13|5|20150507221636
8648648648 |13|5|
20150507221638 7406079160 | 20150507221941
答え1
grep
コマンドには-r
オプションがあります
ディレクトリ内のテキストを再帰的に検索します。
以下の例:
grep -r "5|20150507" ./ | awk -F ':' {'print $2'}
答え2
"-h"オプションと一緒にgrepを使用してください。
-h, --no-filename
Suppress the prefixing of file names on output. This is
the default when there is only one file (or only standard input) to
search.
./files/ -name "*.txt" -print0 | xargs -0 grep -h "5|20150507" 検索
答え3
find ./files/ -name "*.txt" -print0 | xargs -0 grep "5|20150507" | awk 'BEGIN{FS=":"} {print $2}'
特殊文字である可能性があるため、区切り文字「FS =」を使用する必要があるかもしれません。