Пока вы являетесь владельцем файла (или root), вы можете изменить время модификации файла, используя 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
.
touch -d "2 hours ago" /path/*.txt
например.