150 GB の xml ファイルがあり、これを約 1 GB に短縮 (つまり切り捨て) したいと考えています。使用できる簡単な (bash または類似の) コマンドはありますか。それとも、プログラムによる方法 (vi または emacs で編集するのは、大規模なシステムでも悪夢です) を使用する必要がありますか。
(情報の損失については特に心配していません。ファイルを短くすれば、ソフトウェアをテストして、回答を何時間も待たずに済むので、ファイルサイズを小さくできます。ファイルが短ければ、それが可能になります。)
答え1
150 GB のファイルの最初の 1 GB を切り捨てて抽出すると仮定します。
とhead
:
head -c 1G infile > outfile
サフィックスを に置き換えて、1024 ではなく 1000 に揃えることG
ができることに注意してください。GB
または、以下を使用しますdd
:
dd if=infile of=outfile bs=1M count=1024
または、Wumpus Q. Wumbley の回答のように、dd
その場で切り捨てることもできます。
答え2
答え3
可能であれば、truncate
John1024 の回答にあるコマンドを使用します。ただし、これは標準の UNIX コマンドではないため、いつか使用できなくなる可能性があります。その場合は、dd
インプレース切り捨ても実行できます。
dd
のデフォルトの動作は、コピーが終了した時点で出力ファイルを切り捨てることです。そのため、長さ 0 の入力ファイルを指定して、目的の切り捨てポイントから書き込みを開始するように指示するだけです。
dd if=/dev/null of=filename bs=1048576 seek=1024
dd
(これは、 multithr3at3d の回答のコピーと切り捨てと同じではありません。)
1048576 と 1024 を使用したのは、1048576*1024 が目的のサイズであるためであることに注意してください。これは「移植性」の回答であり、classic はdd
サフィックスk
、b
、w
のみを認識するため、 bs=1m は使用しませんでした。