truncateコマンドは、ファイルのサイズを拡張または縮小することができます。
truncateコマンドはファイルのサイズを0にして、ファイルを空にすることに利用されます。
目次
truncateコマンドの利用例
ファイルのサイズを指定
(-sオプション)
truncateコマンドは基本的に-sオプションでファイルサイズを指定して、利用します。ファイルはその指定したファイルサイズに拡張または縮小されます。
コマンド例実行前
1 2 |
$du -b file.txt 10 file.txt |
コマンド例
1 |
truncate -s0 file.txt |
実行結果
1 2 |
$du -b file.txt 0 file.txt |
コマンド例と実行結果
1 2 3 4 5 |
$du -b file.txt 10 file.txt $> file.txt $du -b file.txt 0 file.txt |
truncateコマンドでは引数に複数のファイル指定できるので、空にしたいファイルが多い場合はtruncateコマンドを利用するとよいでしょう。
コマンド例と実行結果
1 2 3 4 5 6 7 |
$du -b * 10 file.txt 20 file2.txt $truncate -s0 * $du -b * 0 file.txt 0 file2.txt |
ファイルを拡張する場合は、拡張された部分がヌル文字で埋められます。このファイルはファイルシステム上でのサイズと実際のディスク上でのサイズで差異があるsparse fileになります。
sparse fileは実際のディスク上に書き込まれるときに、空のデータ部分はそのまま書き込まれるのではなく、短いメタ情報になります。そのようになることで、より効率的にファイルシステムのスペースが効率的に利用されています。
コマンド例と実行結果
1 2 3 4 5 |
$truncate -s4096 file.txt $du file.txt 0 file.txt $du -b file.txt 4096 file.txt |
duコマンドで-bオプション(--apparent-sizeオプションが暗黙的に含まれています)はファイルの実際のサイズになります。
また、ファイルサイズの接尾辞として以下のようなものを利用できます。
ファイルサイズを指定できる接尾辞
記号 | サイズ(bytes) |
KB | 1000 |
K | 1024 |
MB | 1000*1000 |
M | 1024*1024 |
GB | 1000*1000*1000 |
G | 1024*1024*1024 |
さらにサイズを指定するときに接頭辞として次の記号を用いるとファイルの現在のサイズに対して拡張や縮小できます。
接頭辞の記号
記号 | 意味 |
+ | 指定サイズ分の拡張する。 |
- | 指定サイズ分の縮小する。 |
< | 指定サイズ以下にする。 |
> | 指定サイズ以上にする。 |
/ | 指定サイズ単位で割り切れるようにする。余りは切り捨てにする。 |
% | 指定サイズ単位で割り切れるようにする。余りは切り上げにする。 |
コマンド例と実行結果
1 2 3 4 5 |
$du -b file.txt 1234 file.txt $truncate -s'/100' file.txt $du -b file.txt 1200 file.txt |
参照したファイルと同じサイズに
(-rオプション)
truncateコマンドのファイルサイズは-sオプションの他に-rオプションでも指定できます。
-rオプションでファイルを指定すると、ファイルを指定したファイルと同じサイズにできます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 |
$du -b file.txt 1234 file.txt $du -b * 1234 file.txt 0 file2.txt $truncate -r file2.txt file.txt $du -b * 0 file.txt 0 file2.txt |
存在しないファイルを作成しない
(-cオプション)
truncateコマンドはファイルが存在しない場合、そのファイルを作成します。
-cオプションを用いると、存在しないファイルを指定した場合に、そのファイルを作成しません。
コマンド例と実行結果
1 2 3 4 5 6 7 8 |
$ls -a . .. $truncate -s0 file.txt $ls -a . .. file.txt $truncate -c -s0 file2.txt $ls -a . .. file.txt |
サイズをI/Oブロックサイズに変更
(-oオプション)
-oオプションを用いると-sオプションの単位がI/Oブロックサイズ単位に変更されます。
コマンド例と実行結果
1 2 3 |
$truncate -o -s1 file.txt $du -b file.txt 4096 file.txt |