hana_shin’s diary

Linuxに関する情報を掲載しています。

ファイルの作り方

1 はじめに

各種方法でファイルを作成してみます。

2 環境

VMware Workstation 14 Player上の仮想マシンを使用しました。

[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

[root@server ~]# uname -r
3.10.0-957.el7.x86_64

3 touchによるファイル作成

3.1 最も簡単な使い方

[root@server ~]# touch test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 0  5月  6 19:22 test.dat

3.2 ファイルの作成日時を指定する方法(-d)

現在日時を確認する。

[root@server ~]# date
2019年  5月  6日 月曜日 20:26:44 JST

10年前の日付のファイルを作成する。

[root@server ~]# touch -d "2009/5/6 00:00:00" test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 0  5月  6  2009 test.dat

本日の日付をファイル名の一部につける方法

[root@server file]# touch test-`date +%Y%m%d`.dat
[root@server file]# ls
test-20190507.dat

4 headによるファイル作成

10バイトのファイルを作成してみます。

[root@server ~]# head -c 10 /dev/zero > test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 10  5月  6 19:24 test.dat

1Kバイトのファイルを作成してみます。

[root@server ~]# head -c 1k /dev/zero > test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 1024  5月  6 19:27 test.dat

1Mバイトのファイルを作成してみます。

[root@server ~]# head -c 1m /dev/zero > test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 1048576  5月  6 19:26 test.dat

1Gバイトのファイルを作成してみます。

[root@server ~]# head -c 1G /dev/zero > test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 1073741824  5月  6 19:28 test.dat

5 fallocateによるファイル作成

10バイトのファイルを作成してみます。

[root@server ~]# fallocate -l 10 test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 10  5月  6 19:31 test.dat

1Kバイトのファイルを作成してみます。

[root@server ~]# fallocate -l 1K test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 1024  5月  6 19:32 test.dat

1Mバイトのファイルを作成してみます。

[root@server ~]# fallocate -l 1M test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 1048576  5月  6 19:32 test.dat

1Gバイトのファイルを作成してみます。

[root@server ~]# fallocate -l 1G test.dat
[root@server ~]# ls -l test.dat
-rw-r--r--. 1 root root 1073741824  5月  6 19:33 test.dat

6 truncate

10バイトのファイルを作成してみます。

[root@server file]# truncate -s 10 test.dat
[root@server file]# ls -l test.dat
-rw-r--r--. 1 root root 10  5月  6 20:10 test.dat

1Kバイトのファイルを作成してみます。

[root@server file]# truncate -s 1K test.dat
[root@server file]# ls -l test.dat
-rw-r--r--. 1 root root 1024  5月  6 20:11 test.dat

1Mバイトのファイルを作成してみます。

[root@server file]# truncate -s 1M test.dat
[root@server file]# ls -l test.dat
-rw-r--r--. 1 root root 1048576  5月  6 20:12 test.dat

1Gバイトのファイルを作成してみます。

[root@server file]# truncate -s 1G test.dat
[root@server file]# ls -l test.dat
-rw-r--r--. 1 root root 1073741824  5月  6 20:12 test.dat

7 mktempによるファイル作成

7.1 引数なしで実行する方法

引数なしでmktempを実行すると、/tmpにユニークな名前のファイルが作成されます。

[root@server file]# mktemp
/tmp/tmp.HDtemULeBT
[root@server file]# ls -l /tmp/tmp.HDtemULeBT
-rw-------. 1 root root 0  5月  6 19:48 /tmp/tmp.HDtemULeBT

7.2 ディレクトを指定する方法

/test配下にユニークな名前のファイルを作成してみます。

[root@server ~]# mkdir /test
[root@server ~]# mktemp --tmpdir=/test
/test/tmp.mX10XnDlDN

[root@server ~]# ls -l /test/tmp.mX10XnDlDN
-rw-------. 1 root root 0  5月  6 19:55 /test/tmp.mX10XnDlDN

8 bashのブレース展開によるファイル作成

8.1 単純な方法

[root@server file]# touch test_{1..10}.dat
[root@server file]# ls -l
合計 0
-rw-r--r--. 1 root root 0  5月  6 19:39 test_1.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_10.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_2.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_3.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_4.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_5.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_6.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_7.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_8.dat
-rw-r--r--. 1 root root 0  5月  6 19:39 test_9.dat

8.2 桁をそろえる方法

[root@server file]# touch test_{01..10}.dat
[root@server file]# ls -l
合計 0
-rw-r--r--. 1 root root 0  5月  6 19:38 test_01.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_02.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_03.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_04.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_05.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_06.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_07.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_08.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_09.dat
-rw-r--r--. 1 root root 0  5月  6 19:38 test_10.dat

8.3 アルファベットと組み合わせる方法

[root@server file]# touch test_{1..3}-{a..c}.dat
[root@server file]# ls -l
合計 0
-rw-r--r--. 1 root root 0  5月  6 19:40 test_1-a.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_1-b.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_1-c.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_2-a.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_2-b.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_2-c.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_3-a.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_3-b.dat
-rw-r--r--. 1 root root 0  5月  6 19:40 test_3-c.dat

9 スパースファイルの作成方法

9.1 truncateで作る方法

1Gバイトのファイルを作成してみます。 ファイルサイズは1Gであることがわかります。

[root@server file]# truncate -s 1G test.dat
[root@server file]# ls -l test.dat
-rw-r--r--. 1 root root 1073741824  5月  6 20:16 test.dat

ファイルが消費しているディスク量を確認してみます。 ファイルサイズは1Gですが、実際にファイルが消費している ディスク量は0バイトであることがわかります。

[root@server file]# du test.dat
0       test.dat

Z 参考情報

【 touch 】 ファイルのタイム・スタンプを変更する | 日経 xTECH(クロステック)