touch – change file timestamps or create files

touch updates file timestamps or creates empty files if they don’t exist. It’s commonly used to quickly create new files.
Synopsis
touch [OPTIONS] FILE...
Common Options
| Option | Description |
|---|---|
-a | Change access time only |
-m | Change modification time only |
-c | Don’t create file if it doesn’t exist |
-d DATE | Use specified date instead of now |
-t STAMP | Use timestamp [[CC]YY]MMDDhhmm[.ss] |
-r FILE | Use timestamp from reference file |
Examples
Create an empty file
$ touch newfile.txt
$ ls -l newfile.txt
-rw-r--r-- 1 greys staff 0 Jan 29 18:00 newfile.txt
Create multiple files
$ touch file1.txt file2.txt file3.txt
$ touch test{1..5}.log # Creates test1.log through test5.log
Update timestamp to now
$ touch existing_file.txt # Updates mtime and atime
Set specific date
$ touch -d "2024-01-15 14:30:00" file.txt
$ touch -d "yesterday" file.txt
$ touch -d "2 days ago" file.txt
Set timestamp using format
$ touch -t 202401151430.00 file.txt # Jan 15, 2024, 14:30:00
Copy timestamp from another file
$ touch -r reference.txt target.txt
Change only access time
$ touch -a file.txt
Change only modification time
$ touch -m file.txt
Don’t create if missing
$ touch -c nonexistent.txt # No file created, no error
Common Patterns
Create file with content
$ echo "initial content" > newfile.txt # Better than touch for this
Create directory structure with files
$ mkdir -p project/src && touch project/src/main.py
Trigger file-based builds
$ touch src/main.c # Make will see file as modified
Create placeholder files
$ touch .gitkeep # Keep empty directory in git
Reset timestamps for testing
$ touch -d "2020-01-01" old_file.txt
$ find . -newer old_file.txt # Find files modified after
Tips
- Creating files:
touchis the simplest way to create empty files - Build systems: Touch source files to force recompilation
- Testing: Set old timestamps to test backup/cleanup scripts
- Permissions: touch preserves existing permissions
- Existence check: Use
touch -cif you only want to update existing files
See Also
Related Commands
- stat — Display file timestamps
- ls — List files with timestamps (
ls -l) - date — Display or set system date
- mkdir — Create directories






