ウェブサイト検索

Linuxでtouchを使って新しいファイルを作成する方法


Linuxターミナルでtouchコマンドを使用して新しいファイルを作成することで、ファイルのタイムスタンプに対する便利な制御が得られます。

時折、Linuxユーザーはシステム上に新しいファイルを作成する必要を感じます。メモを取るため、コードを書くため、あるいはプログラミング中のファイル検証のためなど、touchコマンドは必要な唯一のファイル作成ユーティリティです。

Linuxでファイルを作成し、タイムスタンプを管理するのは、touchコマンドを使えば簡単です。本記事では、touchコマンドについて詳しく説明し、このツールを使用して実行できるさまざまな機能についても説明します。

タッチコマンドとは何ですか?

touchコマンドの主な機能は、ファイルのタイムスタンプを更新および管理することです。Linuxでの作業に少し経験があれば、Linuxディストリビューションでは、すべてのファイルに特定のタイムスタンプが関連付けられていることをご存知かもしれません。

タイムスタンプは、ファイルが最後に変更、アクセス、または修正された日時などのファイル関連情報を保存する役割を果たします。これらのタイムスタンプは、mtime、atime、およびctimeです。これらの情報は、touchコマンドを使用することで簡単に変更できます。

タッチコマンドの使い方

touchコマンドの最も基本的な使用法は、新しい空のファイルを作成することです。ファイル作成時に内容を追加するように促すcatコマンドとは異なり、touchコマンドはそのようなプロンプトなしに空のファイルを作成します。

これは、新しいファイルを常に作成しなければならないソフトウェア開発者にとって有益です。コードを書くためであれ、特定のファイルの存在を確認するためであれ。

基本構文

touchコマンドの基本構文は次の通りです:

touch [options] [filename]

タッチコマンドの機能を利用するには、optionsの代わりにさまざまな引数やフラグを渡し、filenameは作成したいファイルの名前です。

touchを使って新しいファイルを作成する

空のファイルを作成するには、touch とファイル名を入力します。

touch newemptyfile

上記のコマンドは、現在の作業ディレクトリにnewemptyfileという名前の新しいファイルを作成します。lsコマンドを使用してファイルが作成されたことを確認できます。

同様に、スペース文字で区切ったファイル名を渡すことで、複数のファイルを一度に作成できます。

touch fileone filetwo filethree

ファイルのタイムスタンプを変更する

上記のように、あなたのストレージにあるすべてのファイルには、3つのタイムスタンプが関連付けられています。

  1. アクセス時間 (atime)
  2. 修正時刻 (mtime)
  3. 変更時間 (ctime)

touchコマンドを使用して、システム上の任意のファイルのアクセス時間と変更時間を変更できます。

ファイルの atime と ctime を更新するには、デフォルトの touch コマンドに -a フラグを使用してください。

touch -a textfile

上記のコマンドは、ファイルのアクセス時間と変更時間を現在の時間に置き換えます。ファイルが存在しない場合、touchは新しいファイルを作成し、そのタイムスタンプを割り当てます。

ファイルの変更時間(mtime)を、touchコマンドに-mフラグを使用して変更することもできます。

touch -m textfile

ファイル名を引数としてstatコマンドを発行することで、タイムスタンプが変更されたかどうか確認できます。

stat textfile

出力 :

File: `textfile'
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 327688 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu)
Access: 2021-04-12 16:59:45.000000000 +0000
Modify: 2021-04-12 16:57:59.000000000 +0000
Change: 2021-04-12 17:02:43.000000000 +0000

上記のスニペットでは、出力に指定されたファイルの atime、mtime、および ctime が表示されているのがわかります。

-c フラグを touch コマンドで使用しても、ファイルが存在しない場合は新しいファイルを作成しません。代わりに、すでに存在するファイルに新しいタイムスタンプを割り当てるためだけに使われます。

touch -c existfile

ファイルにカスタムタイムスタンプを追加する

ファイルのカスタム変更タイムスタンプを設定したい方には、-cオプションと-tオプションが役立ちます。同じことを行うには、次の形式を使用してください。

touch -c -t YYDDHHMM filename

...ここでYYDDHHMMは設定したい日時を、filenameは変更したいファイルの名前を表します。

ファイルのタイムスタンプをよりユーザーフレンドリーな方法で変更するには、touchコマンドに-dフラグを使用します。設定したい時刻をわかりやすい言葉で指定する必要があります。

touch -d "5 hours ago" newfile

dateコマンドとtouchを組み合わせることで、古いものに従った新しい修正タイムスタンプを追加できます。

touch -d "$(date -r filename) - 5 hours" existfile

ファイルのタイムスタンプが午後2時の場合、前述のコマンドを実行すると、ファイルの新しいmtimeが午前9時に設定されます。

ファイルの作成時にカスタム修正タイムスタンプを設定することもできます。-t フラグを使用すると、同じことができます。

touch -t YYMMDDHHMM.SS filename

例えば、2020年12月12日21時00分33秒のタイムスタンプで新しいファイルを作成するには、次のコマンドを使用してください。

touch -t 202012120900.33 newfile

修正したいファイルへのパスがわからない場合は、findコマンドを使用して類似の名前のファイルを検索してください。

ファイルを作成するときに、mtimeとatimeを個別に設定することもできます。コマンドに-aおよび-mフラグを使用してください。

新しいファイルを作成する際にアクセス時間のみを割り当てるために:

touch -a -t 202012120900.33 newfile

次のコマンドは、新しく作成されたファイルに指定された変更時間を割り当てます。

touch -m -t 202012120900.33 newfile

他のファイルからタイムスタンプをコピーする

他のファイルのタイムスタンプをコピーするには、touchコマンドに-rフラグを使用します。コマンドのデフォルトの構文は次のとおりです:

touch -r originalfile copiedfile

...ここでは、originalfileのタイムスタンプがcopiedfileにコピーされています。

Linuxでファイル情報を変更する

ファイルのタイムスタンプを管理するのは、タッチコマンドを使うことでこれまでになく簡単になりました。Linuxで新しいファイルを作成する場合、タッチやキャットなどのさまざまなオプションがあります。しかし、これらの選択肢は、Linuxベースのオペレーティングシステムでの作業にそこそこ経験のある人にのみ適しています。

コマンドラインに不安がある方のために、グラフィカルに新しいファイルを作成できるいくつかのファイルマネージャーが利用可能です。また、恐ろしいコマンドに脳を圧倒されることなくシステムストレージをナビゲートしたい場合、これらのファイルマネージャーはあなたにとって完璧な選択です。

関連記事: