Linuxのタッチコマンド
Linuxのタッチコマンドはファイルのタイムスタンプを変更するために使用されますが、タッチコマンドの最も一般的な使用法の1つは、新しい空のファイルの作成です。
touchコマンドを使用すると、Linuxでファイルやフォルダーのアクセスを変更したり、時間を変更したりできます。タイムスタンプを更新したり、過去の日付に変更したりできます。
touchコマンドの構文は非常に単純です:
touch [option] file
Linuxのファイルタイムスタンプとは何ですか?
Linuxのタイムスタンプについては、以前の記事で詳しく説明しました。よりよく、より明確に理解するためにそれを読むことをお勧めします。簡単に思い出せるように、ここにタイムスタンプをリストします:
- アクセス時間–ファイルが最後にアクセスされた時間
- 変更時刻–ファイルが最後に変更された時刻
- 変更時刻–ファイルメタデータ(ファイルのアクセス許可、所有権など)が最後に変更された時刻
次の方法でstatコマンドを使用して、ファイルのタイムスタンプを確認できます。
stat abhi.txt
File: abhi.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11940163 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 14:12:24.476483367 +0530
Modify: 2018-09-02 14:12:24.476483367 +0530
Change: 2018-09-02 14:12:24.476483367 +0530
Birth: -
Statコマンドは、ファイルのiノード番号も表示します。
9Linuxでのタッチコマンドの実用例
次に、touchコマンドの使用方法をいくつかの簡単で便利な例で見てみましょう。
1。空のファイルを作成する
前述したように、これはタッチコマンドの最も一般的な使用法です。あなたがしなければならないのは、ファイル名でtouchを使用することだけです。
touch <filename>
ファイルが存在しない場合、これにより空のファイルが作成されます。
touch empty_file
ls -l empty_file
-rw-r--r-- 1 abhishek abhishek 0 Sep 2 14:37 empty_file
しかし、ファイルがすでに存在する場合はどうなりますか?その場合、ファイルの3つのタイムスタンプすべてが現在の時刻に更新されます。
2。複数の空のファイルを作成する
touchを使用して、複数の空のファイルを作成することもできます。作成するファイルの名前を入力するだけです。
touch <file1> <file2> <file3>
すべてのファイル名を書き込むのが面倒だと思われる場合は、次の方法でファイル名を自動生成できます。
touch new-file-{1..10}.txt
これにより、new-file-1.txt、new-file-2.txtからnew-file-10.txtまでが作成されます。
3。存在しない場合は、タッチでファイルを作成しないでください
Touchは、入力ファイルが存在する場合はタイムスタンプを更新し、入力ファイルが存在しない場合は空のファイルを作成します。
しかし、タッチして新しい空のファイルを作成したくない場合はどうでしょうか。ファイルのタイムスタンプを更新する必要がありますが、ファイルが存在しない場合は作成しないでください。
このような場合は、-cオプションを指定してtouchコマンドを使用できます。
touch -c <filename>
覚えておいてください :Touchは、存在しない場合は新しい空のファイルを作成し、そうでない場合は既存のファイルのタイムスタンプを変更します。 -cオプションを使用して、新しいファイルの作成を停止できます。
4。ファイルのすべてのタイムスタンプを変更する
既存のファイルにタッチを使用すると、そのファイルのアクセスが変更され、時間が変更されます。
たとえば、次のタイムスタンプを持つsherlock.txtという名前のこのファイルがあります。
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-25 09:44:56.092937000 +0530
Modify: 2018-08-09 09:41:05.028309000 +0530
Change: 2018-08-25 09:44:56.096937182 +0530
このコマンドをタッチすると、すべてのタイムスタンプが現在のタイムスタンプに変更されます。
touch sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:22:47.017037942 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:22:47.017037942 +0530
Birth: -
注:ctime(変更時間)に煩わされることはありません。これはシステムプロパティであり、ユーザーが制御することはできません。アクセスと変更時間に焦点を当てる必要があります。
5。ファイルのアクセス時間のみを更新する
ファイルのすべてのタイムスタンプを常に変更したい場合はありません。ファイルのアクセス時間を変更したいだけの場合は、タッチで-aオプションを使用できます。
touch -a sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:29:08.796926093 +0530
Birth: -
6。ファイルの変更時刻のみを更新
ファイルの変更時刻を現在のタイムスタンプに更新するだけの場合は、touchコマンドの-mオプションを使用します。
touch -m sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:31:25.770866881 +0530
Change: 2018-09-02 15:31:25.770866881 +0530
Birth: -
7。別のファイルのタイムスタンプを使用する
次の方法で、-rオプションを使用して別のファイルのタイムスタンプを参照として使用することもできます。
touch -r <source_file> <target_file>
これにより、ターゲットファイルのアクセス時間と変更時間がソースファイルのアクセス時間と変更時間と同じに設定されます。
8。特定のアクセスと変更時間を設定する
ほとんどすべての場合(参照ファイルを除く)、タイムスタンプが現在のタイムスタンプに変更されていることに気付いたかもしれません。
しかし、あなたはそれに縛られていません。タッチを使用すると、アクセスおよび変更時刻を過去または将来の日付に設定できます。 -tオプションとタイムスタンプは次の形式で使用できます。
[[CC] YY] MMDDhhmm [.ss]
- CC –年の最初の2桁
- YY –年の2桁目
- MM –月(01-12)
- DD –月の日(01-31)
- hh –その日の時間(00-23)
- mm –時間の分(00-59)
- ss –秒(00-59)
上記の場合、CCはオプションです。実際、CCYYもオプションであり、その場合は今年がかかります。同様に、秒もオプションであり、デフォルトは00です。
タイムスタンプを12021301に変更して例を示しましょう。つまり、今年の12か月目、2日目、13時間目、1分目です。
touch -t 12021301 agatha.txt
stat agatha.txt
File: agatha.txt
Size: 457 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928279 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-12-02 13:01:00.000000000 +0530
Modify: 2018-12-02 13:01:00.000000000 +0530
Change: 2018-09-02 15:59:47.588680901 +0530
Birth: -
無効な日付を入力しようとすると、エラーが表示されます。また、変更時刻は、アクセスや変更と同じではなく、現在のタイムスタンプを使用していることに気付くでしょう。それはシステムプロパティだからです。
9。シンボリックリンクのタイムスタンプを変更する
シンボリックリンクでtouchコマンドを使用することもできます。シンボリックリンクを処理するときは、-hオプションを使用する必要があります。残りは通常のファイルと同じままです。
touch -h <symbolic_link>
Linuxでのこれらのタッチコマンドの例がお役に立てば幸いです。ご質問やご提案がございましたら、お知らせください。