В Linux у каждого файла есть временные метки. В них хранится информация о времени последнего доступа, времени последней модификации (изменения содержимого) и времени последнего изменения (изменения метаданных). Поэтому при создании нового файла, доступе к файлу или его модификации временные метки этого файла автоматически обновляются.
В данном руководстве мы рассмотрим несколько полезных практических примеров использования команды touch. Это стандартная программа операционных систем Unix/Linux, используемая для создания и изменения временных меток файлов.
Синтаксис touch
touch [ОПЦИИ] ФАЙЛ
Опции команды следующие:
-a изменить только время доступа
-m изменить только время модификации
-c не создавать файл, если он не существует
-r использовать время доступа и модификации заданного файла
-t использовать заданные дату и время вместо текущего
-d использовать дату и время, заданные в виде строки
—help вывести справочное сообщение и выйти
—version вывести информацию о версии и выйти
Создание пустого файла
Следующая команда создает новый пустой (размером 0 байт) файл с именем file1:
# touch file1
Создание нескольких файлов
При помощи команды touch можно создавать больше одного файла. Например, следующая команда создаст три файла – file1, file2 и file 3:
# touch file1 file2 file3
Также можно указывать диапазон, например:
# touch file{1..3}
Изменение времени доступа и модификации
Для изменения или обновления времени последнего доступа и модификации файла используются опции «-a» и «-m». Первая из них изменяет время доступа, и если в явном виде не указана вторая, время модификации остается неизменным. Следующая команда устанавливает текущее время доступа к файлу file1. Если файл не существует, будет создан новый пустой файл с таким именем:
# touch -a file1
Если нужно изменить время модификации файла file2, выполните следующую команду. Аналогично, время доступа остается неизменным, если не указать опцию -a:
# touch -m file2
Временные метки используются для сортировки и поиска файлов такими популярными командами Linux, как find и ls.
Запрет создания нового файла
Опция «-c» запрещает команде touch создавать новый файл. Например, следующая команда не будет создавать файл file4, если его не существует:
# touch -c file4
Установка заданного времени доступа и модификации
При помощи опций «-c» и «-t» можно задать время в явном виде. Формат команды следующий:
# touch -c -t [[ВВ]ГГ]ММДДччммм[.сс] file1
ВВ – первые две цифры года
ГГ – последние две цифры года.
Значения «ВВ» и» ГГ» можно не указывать: если «ГГ» в диапазоне 69-99, то «ВВ» автоматически устанавливается в 19, для «ГГ» 00-38 значение «ВВ» устанавливается в 20. Если не указать год вообще, то устанавливается текущий год. «ГГ» от 39 до 68 приводит к ошибке.
ММ – месяц (01-12)
ДД – день (01-31)
чч – час (00-23)
мм – минута (00-59)
сс – секунда (00-59), не обязательно
Например, следующая команда устанавливает дату и время доступа и модификации файла file1 в 10:26 16 января текущего года (2019):
# touch -c -t 01161026 file1
Результат можно проверить командой ls -l:
# ls -l total 2 -rw-r--r--. 1 root root 0 Jan 16 10:26 file1
Вместо опции «–t» можно использовать опцию «–d», которая позволяет задать дату и время в виде строки в более удобном и читаемом человеком формате, например:
# touch -c -d '14 Mar' file1
Так как время и год не указаны, данная команда устанавливает дату 14 марта текущего года, а время – 00:00.
Использование временных меток другого файла
Команда touch с опцией «-r» позволяет задать файлу временные метки другого файла. Например, следующая команда установит для файла file2 временные метки file1. Таким образом, временные метки обоих файлов будут одинаковыми:
# touch -r file1 file2
Создание файла с заданным временем
Опцию «-t» можно использовать для создания пустого файла с заданной временной меткой. Обратите внимание на отсутствие опции «-с»:
# touch -t 201812101830.55 file5
Приведенная команда создает файл с именем file5 и временной меткой 18:30:55 10 декабря 2018 года.
Заключение
Команда touch очень простая, и мы рассмотрели практически все ее опции. Однако, в разных версиях операционных систем ее работа может немного отличаться. Уточнить детали всегда можно на соответствующей man-странице.
А как создать надо несколько файлов в имени которых есть пробел?
Чтобы создать несколько файлов в имени которых есть пробел, нужно просто перед пробелом поставить обратный слеш \
То есть, получится команда типа: touch new\ file{1..3} которая создаст три файл с именами new file1, new file2, new file3.
Проще говоря в любых командах пробел пишется с обратным слешем.