Linux findコマンドを使用してファイル名の代わりにコンテンツを印刷するには?

Linux findコマンドを使用してファイル名の代わりにコンテンツを印刷するには?

私はこれに似た名前を持つ何千ものunlファイルを持っていますcbs_cdr_vou_20180624_603_126_239457.unl。次のコマンドを使用して、このファイルのすべての行を印刷したいと思います。しかし、ファイル名だけを教えてくれます。ファイル名は必要ありません。このファイルの内容だけが必要です。

find -type f -name 'cbs_cdr_vou_20180615*.unl'  > /home/fifa/cbs/test.txt

現在の出力:

./cbs_cdr_vou_20180615_603_129_152023.unl
./cbs_cdr_vou_20180615_603_128_219001.unl
./cbs_cdr_vou_20180615_602_113_215712.unl
./cbs_cdr_vou_20180615_602_120_160466.unl
./cbs_cdr_vou_20180615_603_125_174428.unl
./cbs_cdr_vou_20180615_601_101_152369.unl
./cbs_cdr_vou_20180615_603_133_193306.unl

予想出力:

8801865252020|200200|20180613100325|;
8801837463298|200200|20180613111209|;
8801845136955|200200|20180613133708|;
8801845205889|200200|20180613141140|;
8801837612072|200200|20180613141525|;
8801877103875|200200|20180613183008|;
8801877167964|200200|20180613191607|;
8801845437651|200200|20180613200415|;
8801845437651|200200|20180613221625|;
8801839460670|200200|20180613235936|;

catコマンドではエラーが発生するため、コマンドの代わりに-bash: /bin/logger: Argument list too long使用しています。findcat

ベストアンサー1

このfindユーティリティはパス名を処理します。find見つかったパス名に対する特定のジョブがコマンドに記載されていない場合、デフォルトのジョブはそのパスを出力することです。

cat-exec次のコマンドを追加して、見つかったパス名に対して操作を実行できますfind

find . -type f -name 'cbs_cdr_vou_20180615*.unl' -exec cat {} + >/home/fifa/cbs/test.txt

これは、指定されたパターンに一致する名前を持つ現在のディレクトリ内または下のすべての一般的なファイルを探します。可能な最大のバッチの場合、ファイルのcat内容をリンクするための呼び出しが行われます。

出力は/home/fifa/cbs/test.txt

関連:

おすすめ記事