私はこのようなcbs_cdr_vou_20180624_603_126_239457.unl
のような名前の何千もの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
を使用したいことに注意してください。
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
に送られます。
関連:
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
_