Пока вы являетесь владельцем файла (или 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
например.ctime
стандартным способом невозможно.ctime
времени изменения метаданных взята из POSIX. Я не знаю, будут ли фрагменты оболочки в моем ответе работать со строгими утилитами оболочки POSIX. Но они определенно работают на Ubuntu, которая является контекстом для ответов на этом сайте.gtouch
черезbrew install coreutils
.Спасибо за помощь. Это сработало для меня:
В терминале перейдите в каталог для редактирования даты. Затем введите:
Вы увидите ">" после того, как нажмете ввод, за исключением последнего раза -> "готово".
Примечание. Вы можете изменить «201203101513».
"201203101513" = это дата, которую вы хотите для всех файлов в этом каталоге.
Смотрите мою веб-страницу
источник
.ss
где ss - количество секунд. (Примечание: это, похоже, не контролирует время подсекунды, такое как наносекунды или миллисекунды, которые для меня просто выглядели как нули; однако это различие было допустимо для моего варианта использования.)Самый простой способ - доступ и изменение будут одинаковыми:
Где:
Если вы хотите использовать,
NOW
просто опустите-t
и отметку времени.Чтобы убедиться, что они все одинаковы:
stat fileName.ext
Смотрите: сенсорный человек
источник
touch
флагов не привел к правильному результату. Дата модификации корректируется, но измененная и доступная дата фактически изменяется на СЕЙЧАСchanged
временем иmodified
временными метками ?Touch может ссылаться на дату файла самостоятельно, не нужно вызывать
date
или использовать подстановку команд. Вот немного со страницы информации касания:Например, чтобы добавить 8 часов к дате файла (имя файла в
file
кавычках на случай пробелов и т. Д.):Использование цикла для всех файлов в текущем каталоге:
Я слышал, что использование a
*
и возможностьfor
выбора имени файла безопаснее , но использованиеfind -print0 | xargs -0 touch ...
должно обрабатывать большинство сумасшедших символов, таких как символы новой строки, пробелы, кавычки, обратные слэши в имени файла. (PS. Старайтесь не использовать сумасшедшие символы в именах файлов в первую очередь).Например, чтобы найти все файлы
thatdir
, имена файлов которых начинаются с символа «И»s
, и добавить один день к измененной метке времени этого файла, используйте:источник
Этот маленький сценарий по крайней мере работает для меня
источник
Прошло много времени с тех пор, как я написал какую-либо программу для Unix, но я случайно неверно установил год на куче рождественских фотографий, и я знал, что если я не изменю дату с 2015 на 2014, это будет проблемой позже ,
Может быть, это простая задача, но я не нашел простого способа сделать это.
Я изменил сценарий, который нашел здесь, который первоначально использовался для изменения даты на минус один месяц.
Вот оригинальный скрипт:
Вот мой модифицированный скрипт, который принудительно назначил дату «2014»:
Теперь я понимаю, что мог бы сделать более общую версию:
Чтобы использовать этот файл, вам нужно написать его и
выполнить:
п = ваш-имя-файла-что-это-ваш-команда
пример
изменит дату на минус один год в каталоге, где вы находитесь.
источник
просто измените дату и время в настройках. затем сохраните ваш файл, он автоматически изменится
источник