150GBのxmlファイルを約1GBに短縮(切り捨て)したいのですが、使用できるシンプルな(bashなどの)コマンドがありますか、それともプログラムによるルート(viまたはemacsで編集する)に移動する必要がありますか大きな鉄システムでも悪夢です)?
(私は特に情報の損失について心配していません。これでソフトウェアの一部をテストし、答えを何時間も待たないように、より短いファイルが欲しいのです。短いファイルでそれが可能になります。)
150GBのxmlファイルを約1GBに短縮(切り捨て)したいのですが、使用できるシンプルな(bashなどの)コマンドがありますか、それともプログラムによるルート(viまたはemacsで編集する)に移動する必要がありますか大きな鉄システムでも悪夢です)?
(私は特に情報の損失について心配していません。これでソフトウェアの一部をテストし、答えを何時間も待たないように、より短いファイルが欲しいのです。短いファイルでそれが可能になります。)
回答:
150 GBファイルの最初の1 GBを切り捨てて抽出するとします。
とhead
:
head -c 1G infile > outfile
G
サフィックスGB
を1024ではなく1000に揃えるために置き換えることができることに注意してください。
またはdd
:
dd if=infile of=outfile bs=1M count=1024
または、Wumpus Q. Wumbleyの回答のように、所定のdd
位置で切り捨てることができます。
可能であれば、truncate
John1024の回答のようにコマンドを使用します。ただし、これは標準のUNIXコマンドではないため、いつかは使用できなくなる可能性があります。その場合、dd
インプレーストランケーションも実行できます。
dd
のデフォルトの動作では、コピーが終了した時点で出力ファイルが切り捨てられます。そのため、長さ0の入力ファイルを指定し、目的の切り捨てポイントで書き込みを開始するように指示します。
dd if=/dev/null of=filename bs=1048576 seek=1024
(これはdd
multithr3at3dの回答のcopy-and-truncateと同じではありません。)
1048576 * 1024が望ましいサイズであるため、1048576と1024を使用したことに注意してください。これは「ポータビリティ」の答えで、クラシックはので、私は、BS = 1メートルを避けるdd
だけサフィックスを知っているk
、b
とw
。
bs
数に数を掛けたseek
値が保持するバイト数になることに注意してください。その制約を満たす2つの数値が機能するはずです。例:bs=1073741824 seek=1
またはbs=1 seek=1073741824
。または、bs
デフォルトは512なので、seek=2097152
単独でも機能します。そして、次のような表記を使用することができ1M
、1K
、1G
と2M
。
私はあなたが何を求めているのか完全にはわかりません。他の149 GBを削除するだけですか、それとも150 GBを1 GBに圧縮しようとしていますか?とにかく、これはこれを達成するための便利な方法かもしれません。
split
コマンドは、複数の部分に任意のファイルを分割することができます。man splitを参照してください。-b
オプションで分割するファイルチャンクのサイズを指定できます。例えば:
$ split -b 1GB myfile.xml
他のオプションがなければ、これは現在のディレクトリに文字で始まるいくつかのファイルを作成するはずx
です。分割されたファイルの名前を調整する場合は、manページを参照してください。
ファイルを再構成するには、を使用しますcat * > re-assembled.xml
。
例:
[kent_x86.py@c7 split-test]$ ls -l opendocman*
-rw-rw-r--. 1 kent_x86.py kent_x86.py 2082602 Mar 31 2017 opendocman-1.3.5.tar.gz
[kent_x86.py@c7 split-test]$ split -b 100K opendocman-1.3.5.tar.gz
[kent_x86.py@c7 split-test]$ ls
opendocman-1.3.5.tar.gz xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau
[kent_x86.py@c7 split-test]$ ll
total 4072
-rw-rw-r--. 1 kent_x86.py kent_x86.py 2082602 Jan 5 11:06 opendocman-1.3.5.tar.gz
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaa
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xab
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xac
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xad
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xae
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaf
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xag
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xah
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xai
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaj
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xak
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xal
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xam
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xan
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xao
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xap
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xaq
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xar
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xas
-rw-rw-r--. 1 kent_x86.py kent_x86.py 102400 Jan 5 11:06 xat
-rw-rw-r--. 1 kent_x86.py kent_x86.py 34602 Jan 5 11:06 xau
[kent_x86.py@c7 split-test]$ cat xa* > opendoc-reassembled.tar.gz
[kent_x86.py@c7 split-test]$ ls -l opendoc-reassembled*
-rw-rw-r--. 1 kent_x86.py kent_x86.py 2082602 Jan 5 11:07 opendoc-reassembled.tar.gz