xargsの結果をリダイレクトでファイルに出力する時に無限ループにしない
特定のディレクトリにあるファイルを全部catして、結果をファイルに保存したい時に最初に以下のように書いてみた。
find . -type f | xargs cat > all.txt
やってみるとわかるが、これだと無限に実行が終了せずにall.txtにどんどんデータが書き込まれてファイルサイズが巨大になっていく。
対処
対処法としてはxargsで直接catに渡さずにshコマンドを経由して実行すると解決した
find . -type f| xargs -I@ sh -c 'cat "@" >> names.txt '