truncate - ファイルを切り詰める

スポンサーリンク

truncateコマンドは、ファイルのサイズを拡張または縮小することができます。

truncateコマンドはファイルのサイズを0にして、ファイルを空にすることに利用されます。

スポンサーリンク

truncateコマンドの利用例

ファイルのサイズを指定
(-sオプション)

truncateコマンドは基本的に-sオプションでファイルサイズを指定して、利用します。ファイルはその指定したファイルサイズに拡張または縮小されます。

コマンド例実行前

コマンド例

実行結果

 

ファイルを空にする方法はほかにもあります。例えば、リダイレクトを使用してもファイルを空にできます。
コマンド例と実行結果

truncateコマンドでは引数に複数のファイル指定できるので、空にしたいファイルが多い場合はtruncateコマンドを利用するとよいでしょう。
コマンド例と実行結果

 

ファイルを拡張する場合は、拡張された部分がヌル文字で埋められます。このファイルはファイルシステム上でのサイズと実際のディスク上でのサイズで差異があるsparse fileになります。

sparse fileは実際のディスク上に書き込まれるときに、空のデータ部分はそのまま書き込まれるのではなく、短いメタ情報になります。そのようになることで、より効率的にファイルシステムのスペースが効率的に利用されています。

コマンド例と実行結果

duコマンドでオプションがない方が実際にディスクが使用しているサイズになります。
duコマンドで-bオプション(--apparent-sizeオプションが暗黙的に含まれています)はファイルの実際のサイズになります。

 

また、ファイルサイズの接尾辞として以下のようなものを利用できます。

ファイルサイズを指定できる接尾辞

記号 サイズ(bytes)
KB 1000
K 1024
MB 1000*1000
M 1024*1024
GB 1000*1000*1000
G 1024*1024*1024

 

さらにサイズを指定するときに接頭辞として次の記号を用いるとファイルの現在のサイズに対して拡張や縮小できます。

接頭辞の記号

記号 意味
+ 指定サイズ分の拡張する。
- 指定サイズ分の縮小する。
< 指定サイズ以下にする。
> 指定サイズ以上にする。
/ 指定サイズ単位で割り切れるようにする。余りは切り捨てにする。
% 指定サイズ単位で割り切れるようにする。余りは切り上げにする。

コマンド例と実行結果

 

 

 

参照したファイルと同じサイズに
(-rオプション)

truncateコマンドのファイルサイズは-sオプションの他に-rオプションでも指定できます。

-rオプションでファイルを指定すると、ファイルを指定したファイルと同じサイズにできます。

コマンド例と実行結果

 

 

 

存在しないファイルを作成しない
(-cオプション)

truncateコマンドはファイルが存在しない場合、そのファイルを作成します。

-cオプションを用いると、存在しないファイルを指定した場合に、そのファイルを作成しません。

コマンド例と実行結果

 

 

 

サイズをI/Oブロックサイズに変更
(-oオプション)

-oオプションを用いると-sオプションの単位がI/Oブロックサイズ単位に変更されます。

コマンド例と実行結果

 

 

 

参考

GNU Coreutils: truncate invocation