La comanda touch fa dues coses: crear fitxers buits i canviar les dates d’accés i de modificació d’un fitxer que ja existeix, sense tocar-ne el contingut. La primera és la que més es fa servir; la segona és útil per a scripts, proves i per a eines com make o find, que decideixen què fer segons les dates dels fitxers.
Sintaxi
touch [opcions] fitxer...
- Si el fitxer no existeix, el crea buit.
- Si existeix, n’actualitza la data d’accés i la de modificació a l’hora actual. El contingut no canvia.
Opcions més útils
| Opció | Què fa |
|---|---|
-a | Només canvia la data d’accés |
-m | Només canvia la data de modificació |
-c | No crea el fitxer si no existeix |
-d data | Fa servir la data indicada en lloc de l’actual ("2026-09-07 14:30", "yesterday", "2 days ago"…) |
-t [[SS]AA]MMDDhhmm[.ss] | Data en format compacte (202601151030 = 15 de gener de 2026 a les 10:30) |
-r fitxer | Copia les dates d’un altre fitxer |
-h | Si és un enllaç simbòlic, canvia les dates de l’enllaç i no les del fitxer on apunta |
Exemples
Crear un fitxer buit:
$ touch nou.txt
$ ls -l nou.txt
-rw-rw-r-- 1 oscar oscar 0 Oct 3 17:53 nou.txt
Crear-ne uns quants de cop, amb l’expansió de claus de Bash:
$ touch fitxer{1..3}.txt
$ ls
fitxer1.txt fitxer2.txt fitxer3.txt nou.txt
Posar una data concreta:
$ touch -d "2026-09-07 14:30" informe.txt
$ ls -l --time-style=long-iso informe.txt
-rw-rw-r-- 1 oscar oscar 0 2026-09-07 14:30 informe.txt
El mateix amb el format de -t:
touch -t 202601151030 vell.txt
Dates relatives (GNU touch entén expressions en anglès):
touch -d "2 days ago" prova.txt
touch -d "yesterday 08:00" prova.txt
Donar a un fitxer les mateixes dates que un altre:
touch -r informe.txt vell.txt
Actualitzar la data només si el fitxer ja existeix, sense crear-lo:
touch -c /var/run/app/estat
Les tres dates d’un fitxer
Linux guarda per a cada fitxer:
| Data | Nom | Quan canvia |
|---|---|---|
| Accés | atime | Quan es llegeix el contingut (depèn de les opcions de muntatge, com relatime o noatime) |
| Modificació | mtime | Quan canvia el contingut. És la que mostra ls -l |
| Canvi | ctime | Quan canvia el contingut o les metadades (permisos, propietari, nom…) |
Les veus totes amb stat:
$ stat informe.txt
File: informe.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 0,32 Inode: 162172 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ oscar) Gid: ( 1000/ oscar)
Access: 2026-09-07 14:30:00.000000000 +0200
Modify: 2026-09-07 14:30:00.000000000 +0200
Change: 2026-10-03 17:53:40.473504789 +0200
Birth: 2026-10-03 17:53:40.473504789 +0200
Fixa’t en una cosa: touch -d ha canviat l’accés i la modificació, però el ctime és el moment real en què hem executat touch. El ctime no es pot posar a mà: el sistema l’actualitza sempre. (Birth és la data de creació, si el sistema de fitxers la guarda.)
Usos pràctics
- Fitxers marcador en scripts: crear
/tmp/copia.okquan acaba una còpia de seguretat i comprovar-ne l’existència o la data més tard. - Cercar fitxers més nous que un altre:
touch -d "2026-10-01" /tmp/refi desprésfind . -newer /tmp/ref. - Forçar una recompilació amb
make:touch main.cfa que es torni a compilar.
Compte amb…
touchno buida un fitxer que ja existeix. Si el que vols és deixar-lo a zero bytes, fes: > fitxer.logotruncate -s 0 fitxer.log.- Per crear un fitxer necessites permís d’escriptura al directori. Per canviar les dates d’un fitxer a l’hora actual n’has de tenir permís d’escriptura, i per posar-li una data concreta (
-d,-t,-r) n’has de ser el propietari.