連載
» 2017年12月01日 05時00分 公開

Linux基本コマンドTips(164):【 truncate 】コマンド――ファイルを指定したサイズに変える

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルを指定したサイズに変える「truncate」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はファイルを指定したサイズに変える「truncate」コマンドです。

truncateコマンドとは?

 「truncate」コマンドは、ファイルを指定したサイズに変更します。元のファイルサイズよりも小さい数値を指定した場合は切り詰め、大きい数値を指定した場合は、後半をNULL文字(0x00)で埋めて拡張します ※1。zipコマンド(連載第34回参照)のようにファイルを圧縮、伸張するのではありません。

※1 truncateは、「切り詰める」「切り捨てる」という意味の英単語だが、truncateコマンドはファイルを拡張する機能も備えている。





truncateコマンドの書式

truncate -s サイズ または -r ファイル [オプション] ファイル1 ファイル2 ……

※[ ]は省略可能な引数を示しています。




truncateの主なオプション

短いオプション 長いオプション 意味
-s --size=サイズ ファイルのサイズを指定する。「-s +サイズ」「-s -サイズ」でサイズを増減する。「-s '<最大サイズ'」で最大サイズ以下に切り下げ、「-s '>最小サイズ'」で最小サイズ以上に切り上げる。「-s /サイズ」で指定したサイズの倍数まで切り下げ、「-s %サイズ」で指定したサイズの倍数まで切り上げる ※2
-o --io-blocks 「-s」の指定をサイズではなくI/Oブロックの数として扱う(1ブロック=4096バイトでフォーマットされている場合、「-s 100 -o」で409600バイトとなる)
-r 参照ファイル --reference=参照ファイル 参照ファイルのサイズと同じサイズにする
-c --no-create 指定したファイルがない場合は作成しない

※2 サイズには2種類の単位が使用可能。1024の累乗で指定する場合はK、M、G、T、P、E、Z、Y(キロ、メガ、ギガ、テラ、ペタ、エクサ、ゼタ、ヨタを意味する)、1000の累乗で指定するときはKB、MB……を使用。





ファイルを指定したサイズに変える

 「truncate -s 100 ファイル」で指定したファイルのサイズを100バイトに変えます(画面1)。もともとのファイルが100バイトより大きい場合は101バイト目以降を切り詰め、100バイトよりも小さかった場合はNULL文字で埋めることで、100バイトに変えます。

 指定したファイルがなかった場合は、truncateコマンドが作成します ※3。作成したくない場合は「-c」オプションを指定してください。

 「truncate -r 参照ファイル ファイル」では、参照ファイルと同じサイズになるように調整します。

※3 ファイルが存在しない場合は、truncateコマンドがNULL文字を埋めて作り出す。例えばfile1が存在しない場合「truncate -s 10 file1」とすると、10バイトのNULL文字で埋まったfile1を出力する。



コマンド実行例

truncate -s 10MB file1

(file1のサイズを10000000バイトに変える)(画面1

truncate -s 10M file2

(file2のサイズを10485760バイトに変える)(画面1

truncate -r file2 file3

(file3のサイズをfile2と同じになるよう変える)(画面1


画面1 画面1 ファイルのサイズを指定するさまざまな指定を試したところ


ファイルを空にする

 サイズを「0」と指定することで、書き込み可能なファイルを内容、サイズとも空にできます(画面2) ※4。

※4 file2のサイズを0に変える場合は「> file2」や「echo -n > file2」(第113回)と実行してもよい。file2がもともと存在しない場合は、「touch file2」(第23回)とできる。



コマンド実行例

truncate -s 0 file1

(file1のサイズを0にする、file1がない場合はサイズ0で作成する)(画面2

truncate -s 0 -c file1

(file1のサイズを0にする、file1がない場合は何もしない)


画面2 画面2 ファイルを空にしたところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。