TOUCH(1) | General Commands Manual | TOUCH(1)

# NAME

`touch` —
change file access and modification times

# SYNOPSIS

`touch` | [`-acfhm`] [`-d` human-datetime] [`-``-date` human-datetime] [`-r` file] [`-``-reference` file] [`-t` datetime] file ...

# DESCRIPTION

The `touch` utility changes the access and modification times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

The following options are available:

`-a`
  Change the access time of the file. The modification time of the file is not changed unless the `-m` flag is also specified.
`-c`
  Do not create the file if it does not exist. The `touch` utility does not treat this as an error. No error messages are displayed and the exit value is not affected.
`-d` human-datetime
`-``-date` human-datetime
  Parse human-datetime using the human datetime parser parsedate(3).
`-f`
  This flag has no effect; it is accepted for compatibility reasons.
`-h`
  If file is a symbolic link, access and/or modification time of the link is changed. This option implies `-c`.
`-m`
  Change the modification time of the file. The access time of the file is not changed unless the `-a` flag is also specified.
`-r` file
`-``-reference` file
  Use the access and modifications times from file instead of the current time of day.
`-t` datetime
  Change the access and modification times to the specified time. The argument datetime should be in the form “[[CC]YY]MMDDhhmm[.SS]” where each pair of letters represents the following:

  CC
    The first two digits of the year (the century).
  YY
    The second two digits of the year. If “YY” is specified, but “CC” is not, a value for “YY” between 69 and 99 results in a “CC” value of 19. Otherwise, a “CC” value of 20 is used.
  MM
    The month of the year, from 1 to 12.
  DD
    The day of the month, from 1 to 31.
  hh
    The hour of the day, from 0 to 23.
  mm
    The minute of the hour, from 0 to 59.
  SS
    The second of the minute, from 0 to 60 (permitting leap seconds). If SS is 60 and the resulting time, as affected by the `TZ` environment variable, does not refer to a leap second, the resulting time is one second after a time where SS is 59. If SS is not given a value, it is assumed to be zero.

  If the “CC” and “YY” letter pairs are not specified, the values default to the current year. If the “SS” letter pair is not specified, the value defaults to 0.

The `-d`, `-r`, and `-t` options are mutually exclusive. If more than one of these options is present, the last one is used.

# ENVIRONMENT

`TZ`
  The timezone to be used for interpreting the datetime argument of the `-t` option.

# EXIT STATUS

The `touch` utility exits 0 on success, and >0 if an error occurs.

# COMPATIBILITY

The obsolescent form of `touch`, where a time format is specified as the first argument, is supported. When no `-d`, `-r`, or `-t` option is specified, there are at least two arguments, and the first argument is a string of digits either eight or ten characters in length, the first argument is interpreted as a time specification of the form “MMDDhhmm[YY]”.

The “MM”, “DD”, “hh” and “mm” letter pairs are treated as their counterparts specified to the `-t` option. If the “YY” letter pair is in the range 69 to 99, the year is set to 1969 to 1999, otherwise, the year is set in the 21st century.

# SEE ALSO

utimes(2), parsedate(3)

# STANDARDS

The `touch` utility is expected to be a superset of the IEEE Std 1003.2 (“POSIX.2”) specification.

# HISTORY

A `touch` utility appeared in Version 7 AT&T UNIX.

# BUGS

A symbolic link can't be a reference file of access and/or modification time.

December 24, 2016 | NetBSD 10.0