Битлента
Сетевые команды и утилиты6 мин чтения·

Команда touch: как создать файл и поменять время изменения

Что делает touch в Linux и macOS: создание пустых файлов, обновление времени, ключи -c, -t, -r, -a, -m. Примеры на тестовой папке и связь с find и rsync.

Кратко

touch имя создаёт пустой файл, если его нет, а у существующего обновляет время изменения и доступа до текущего. Ключи -t и -r задают другое время, -c запрещает создание. Содержимое файла touch не меняет.

Два назначения одной короткой команды

Название touch переводится как «коснуться», и это хорошо описывает суть: команда лишь касается файла. Если файла с таким именем нет, она создаёт его пустым. Если файл существует, его содержимое остаётся прежним, а время последнего изменения и последнего доступа становится равным текущему моменту.

Отсюда два привычных сценария. Первый — быстро создать заготовку: touch notes.txt, touch config.ini. Второй — «встряхнуть» файл, чтобы другие программы решили, что он обновился: например, система сборки или скрипт, ориентирующиеся на время изменения.

Можно передать несколько имён сразу: touch a.txt b.txt c.txt. В bash и zsh удобна фигурная подстановка: touch part{1..3}.txt создаст part1.txt, part2.txt и part3.txt. Эта запись раскрывается самой оболочкой, а не командой touch, поэтому в более простых оболочках она может не работать.

Для тренировки используйте отдельную папку: mkdir ~/touch-test и cd ~/touch-test. Проверять результат удобно через ls -l, который показывает время изменения, и через stat, подробнее о нём рассказано на отдельной странице.

Ключи touch: что меняют

Базовые ключи описаны в справке POSIX, поэтому работают и в Linux, и в macOS. Дополнительные расширения зависят от версии, и о них лучше смотреть в man touch.

КлючЧто делает
-cне создавать файл, если его нет
-aменять только время доступа
-mменять только время изменения
-t времязадать время в формате [[CC]YY]MMDDhhmm[.SS]
-r эталонвзять время у другого файла

Пример: touch -t 202501011200 notes.txt устанавливает время изменения и доступа на первое января 2025 года, 12:00. Формат записи неудобен тем, что цифры идут слитно, и ошибка в одной из них даёт другую дату. После команды проверьте результат через ls -l.

Ключ -r особенно полезен: touch -r original.txt copy.txt копирует метки времени с одного файла на другой. Так делают, чтобы копия выглядела неотличимой по времени.

Ключ -d тоже есть, но форматы даты у него в GNU и BSD версиях разные: GNU принимает и дату словами, а BSD — более строгую запись. Универсальный вариант — -t. Изменить время смены метаданных (ctime) touch не может: оно обновляется системой на текущее время при любом таком изменении.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Как touch помогает в других командах

Метки времени используются многими утилитами, поэтому touch часто выступает вспомогательным инструментом. Вот несколько типовых связок.

  • find -newer. Создайте «метку» в нужный момент командой touch marker, а позже выполните find . -newer marker, чтобы увидеть всё, что менялось после неё. Приём описан в статье про find.
  • rsync. По умолчанию rsync сравнивает размер и время изменения. Если время файла поменять, программа сочтёт его изменённым и передаст заново. Поэтому «лишнее» касание touch может увеличить список передачи; проверяйте это через пробный запуск.
  • Скрипты и задачи по расписанию. Пустой файл-флаг (touch done.flag) служит сигналом, что этап выполнен, а команда test -e проверяет его наличие.
  • Журналы. Создать пустой файл журнала до записи в него удобно, если программа сама этого не делает: touch app.log.

Заметьте, что касание не изменяет содержимое: размер пустого файла остаётся нулевым. Если вы хотите именно очистить существующий файл, это другая задача, решаемая перенаправлением, и делать её нужно осторожно, так как данные пропадут.

Права и типичные ошибки

Команда touch сообщает об ошибке, когда не может выполнить действие. Самые частые случаи собраны в таблице.

СообщениеЧто значитЧто проверить
Permission deniedнет права записи в папку (для создания) или в файл (для смены времени)права и владелец командой ls -l, при необходимости stat
No such file or directoryуказанной папки не существуетсоздать папку через mkdir или поправить путь
Не создаётся файл при -cэто ожидаемое поведение ключаубрать -c
Время не поменялосьфайловая система или ключ ограничивают изменениепроверить ключи и повторить без -a или -m

Если файл принадлежит другому пользователю, обновить время до текущего можно при наличии права записи в файл, а вот задать произвольное время (ключи -t, -r, -d) обычно может только владелец или администратор; в последнем случае сработает sudo touch. Но если вы используете sudo для создания файлов в своей домашней папке, они окажутся принадлежащими администратору, и позже обычный пользователь не сможет их изменить. Исправить это помогает смена владельца, об этом статья про chown.

Не создавайте файлы в системных каталогах без необходимости. Для экспериментов хватает собственной тестовой папки: так вы видите результат каждой команды и не рискуете чужими данными. Если нужно создать файл в каталоге, где у вас нет права записи, сначала выясните, кому принадлежит этот каталог и зачем туда нужен новый файл, а уже потом решайте, нужны ли повышенные права.

Шпаргалка и безопасные эксперименты

Чтобы закрепить материал, пройдите небольшой сценарий в тестовой папке. Он не затрагивает никаких данных, кроме созданных вами файлов.

  1. mkdir ~/touch-test && cd ~/touch-test
  2. touch first.txt — создаёт пустой файл; посмотрите ls -l.
  3. touch -t 202001011200 first.txt — выставляет старую дату; снова ls -l.
  4. touch first.txt — возвращает текущее время.
  5. touch -c nothing.txt — файл не создаётся, потому что он не существовал.
  6. touch -r first.txt second.txt — создаёт second.txt (если его нет) и копирует время с first.txt.

Убедитесь в каждом шаге через ls -l или stat. После опытов удалите тестовую папку командой rm -r ~/touch-test, проверив путь глазами: удаление необратимо.

Если команда touch вам нужна для массовых операций, комбинируйте её с find и xargs, но сначала просматривайте список файлов без изменений. А для просмотра точных времён, включая различия mtime, atime и ctime, возвращайтесь к статье про stat.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
touchфайлыlinuxmacosвремя файла

Часто задаваемые вопросы

Читайте также