The touch command in Linux updates the timestamps on a file or creates the file if it doesn’t exist. See some examples and use cases below.
It sounds useless, but it’s actually useful. For example, if you want to create an empty file called my_file.txt, you can just run:
Updating the timestamps of a file is also useful.
Say you have a file called favorite_tv.txt, which you use to keep the name of your current favorite TV show.
Your favorite show 10 years ago was The Flintstones, and it still is. It hasn’t changed. But the timestamp for this file shows it was last edited 10 years ago. Anyone looking at that file might not know it’s still your favorite show.
… the contents of the file would remain unaltered, but anyone looking at the timestamps would see that The Flintstones is still your favorite show, as the modification timestamp is recent.
touch [OPTIONS] file1 [file2 file3...]
- One or more file paths can be supplied
- Optional OPTIONS can be supplied – see the below table for some common ones
- By default, touch will update both the access and modification times of the listed file
|-a||change only the access time|
|-c||Do not create any files|
|-m||Change only the modification time|
|-d DATE||Use DATE instead of current time where DATE is a date/time in a parsable string|
|-h||Affect each symbolic link instead of any referenced file|
For more options and details, you can view the touch manual by running:
Creating a new file or updating the access and modification timestamps is already covered above – here are some more examples using the above options.
To confirm the changes made by any of the below examples, you can run:
Changing Only Access Time
touch -a my_file.txt
Changing Only Modification Time
touch -m my_file.txt
Setting a Specific Date/Time
touch -d '17 March 2021 10:26' my_file.txt
By default, touch will operate on the file referenced by a symbolic link rather than on the link itself. To change this and update the timestamps of the link, use the -h option:
touch -h my_symbolic_link