スペースオーバーヘッドなしでファイルをマージするUnixユーティリティ

スペースオーバーヘッドなしでファイルをマージするUnixユーティリティ

ファイルを1行ずつ標準出力にダンプし、その行を削除するユーティリティはありますか?

catもちろん、配信したい大容量ファイルがたくさんあります。

cat *.txt > merged.txt 

ただし、これはファイルが元々占有していたスペースの2倍を占めますtxtcatこのように削除した後

cat *.txt > merged.txt && rm -rf *.txt

2倍のスペースが必要でありながらストレージ要件の削減

私は元のファイルから行を削除しながら、行を標準出力にストリーミングするコマンドを探しています。

<some command> *.txt > merged.txt

このように、*.txt+merged.txtが使用する合計スペースは*.txt最初に必要なスペースを超えません。

ベストアンサー1

1行ずつ整理するのは少しトリッキーに聞こえますが、ファイルごとに実行することを許可した場合(保存容量がすべての*.txtファイル+その1つを超えないように):

find -name "*.txt" -exec cat {} >> result.txt \; -exec \rm -f {} \;

特に注意してください! find コマンドを実行する前に、必ず結果を確認してください。それ以外の場合は、rm削除しない項目を光の速度で削除します。

おすすめ記事