ddコマンドを使用してファイルを別のファイルの特定の場所にコピーする方法は?

ddコマンドを使用してファイルを別のファイルの特定の場所にコピーする方法は?

ddLinuxでは、コマンドを使用して特定の場所にある256バイトのファイルを、任意のデータを含む他の2048バイトのサイズファイルにコピーしたいと思います。私のオフセットはです144bs=1count=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=exprconv=notruncdd

源泉)

使用conv=notrunc。オペランドは移植可能です。

conv=value[,value ...]

[… ]

notrunc
出力ファイルを切り捨てないでください。 dd ユーティリティーを呼び出して、明示的に作成されていないブロックを出力ファイルに保存します。 [… ]

(同じ上記と)

そうでなければ、コマンドはよさそうです。修正されたコマンド:

dd if=file1.data of=file2.data bs=1 count=256 seek=144 conv=notrunc

おすすめ記事