Вы можете изменить время модификации файла с помощью команды touch
:
touch filename
По умолчанию это устанавливает время модификации файла на текущее время, но есть несколько флагов, таких как флаг -d
, чтобы выбрать конкретную дату. Например, чтобы установить файл как измененный за два часа до настоящего времени, вы можете использовать следующее:
touch -d "2 hours ago" filename
Если вы хотите изменить файл относительно его существующего времени модификации, следующее должно сделать трюк:
touch -d "$(date -R -r filename) - 2 hours" filename
Если вы хотите изменить большое количество файлов, вы можете использовать следующее:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Вы можете изменить аргументы на find
, чтобы выбрать только те файлы, которые вас интересуют. Если вы хотите обновить время модификации файла относительно текущего времени, вы можете упростить это:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Эта форма невозможна с относительной версией времени файла, поскольку она использует оболочку для формирования аргументов в touch
.
Что касается времени создания, большинство файловых систем Linux не отслеживают это значение. Существует ctime
, связанное с файлами, но отслеживается, когда метаданные файла были изменены в последний раз. Если файл никогда не изменил свои права, возможно, это приведет к созданию времени создания, но это совпадение. Явное изменение времени изменения файла считается изменением метаданных, поэтому также будет иметь побочный эффект обновления ctime
.