私はこれに似た名前を持つ何千もの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
使用しています。find
cat
答え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
。
関連:
答え2
出力はfind
関連ファイル名を生成します。
出力は、|
各ファイルに対して実行されるコマンドにパイプ()できます。xargs cat
cat
たとえば、
find -type f -name 'cbs_cdr_vou_20180615*.unl' | xargs cat > /home/fifa/cbs/test.txt
別のオプションは、次のものを使用することです。-exec cat
find -type f -name 'cbs_cdr_vou_20180615*.unl' -exec cat {} \; > /home/fifa/cbs/test.txt