dd
Linuxでは、コマンドを使用して特定の場所にある256バイトのファイルを、任意のデータを含む他の2048バイトのサイズファイルにコピーしたいと思います。私のオフセットはです144
。bs=1
、count=256
およびと仮定しますseek=144
。私が実行したコマンドは次のとおりです。
dd if=file1.data of=file2.data bs=1 count=256 seek=144
ただし、実行してみると、file2.dataのサイズはまだ2048バイトですが、縮小する必要があります。誰かが私のコマンドが間違った理由とファイルが正しい場所にあるかどうかを確認する方法を見つけるのに役立ちますか?
答え1
しかし、実行してみると、
file2.data
サイズはまだ2048バイトですが、縮小する必要があります。
この動作は文書化されています。
of=file
出力パス名を指定します。デフォルトは標準出力です。 [...]指定したが指定しなかった場合、コピー効果は出力ファイルに見つかったブロックを保存しますが、出力ファイルの他の部分は保存しません。 (照会サイズに入力ファイルサイズを加えた値が前の出力ファイルサイズより小さい場合は、出力ファイルをコピーして減らす必要があります。[...])seek=expr
conv=notrunc
dd
(源泉)
使用conv=notrunc
。オペランドは移植可能です。
conv=value[,value ...]
[… ]
notrunc
出力ファイルを切り捨てないでください。 dd ユーティリティーを呼び出して、明示的に作成されていないブロックを出力ファイルに保存します。 [… ]
(同じ上記と)
そうでなければ、コマンドはよさそうです。修正されたコマンド:
dd if=file1.data of=file2.data bs=1 count=256 seek=144 conv=notrunc