Как изменить дату создания файла линукс

Under a Linux shell, how can I change the creation time of all a folder's files to the current time?

Under a Linux shell, how can I change the creation time of all a folder’s files to the current time?

Gaff's user avatar

Gaff

18.3k15 gold badges56 silver badges68 bronze badges

asked Jun 19, 2011 at 0:40

tomy's user avatar

3

The OP asked for the creation time, but Ian Yang and boehj answers are based on command touch setting the modification, access and change times to current time.

As boehj said (in his comment) there is no creation time of a file… This is true for most of the filesystems, but on some modern filesystems (as ext4) the creation (or birth) time of a file is stored within the inode.

Therefore we can give a more correct answer scrupulously respecting the question title:

cp -a  your-folder tmp-folder
rm -rf your-folder
mv tmp-folder your-folder

This will change the creation time (birth time) to the current time. This also updates the change time but keep unchanged the modification and access times.

For information, the change time is sometimes abbreviated as ctime and can be confused with the creation time (crtime or btime). In fact, the change time of a file is the modification time of its corresponding inode. Therefore commands modifying inode content as chmod or chattr also set the change time to current time.

Community's user avatar

answered Aug 26, 2013 at 16:12

oHo's user avatar

oHooHo

2,8332 gold badges17 silver badges13 bronze badges

2

Navigate to the folder in question, let’s say, ~/Documents/myfiles.

$ cd ~/Documents/myfiles

Then do:

$ touch *

This will change the modification time to whenever you executed that command.

Obviously you can make this more specific depending on your use case, e.g.

$ touch *.doc

will only alter the modification time for files with the string ‘.doc’ in their name.

Gaff's user avatar

Gaff

18.3k15 gold badges56 silver badges68 bronze badges

answered Jun 19, 2011 at 0:52

boehj's user avatar

boehjboehj

1,0902 gold badges10 silver badges20 bronze badges

In Linux, if you want to do some thing recursively in directory, or you want to apply some actions on files meeting some criterions,you should try find and xargs

Touch all files in ~/Documents/myfiles (including files in sub directory)

find ~/Documents/myfiles -type f -print0 | xargs -0 touch

answered Jun 19, 2011 at 3:39

Ian Yang's user avatar

1

Under a Linux shell, how can I change the creation time of all a folder’s files to the current time?

Gaff's user avatar

Gaff

18.3k15 gold badges56 silver badges68 bronze badges

asked Jun 19, 2011 at 0:40

tomy's user avatar

3

The OP asked for the creation time, but Ian Yang and boehj answers are based on command touch setting the modification, access and change times to current time.

As boehj said (in his comment) there is no creation time of a file… This is true for most of the filesystems, but on some modern filesystems (as ext4) the creation (or birth) time of a file is stored within the inode.

Therefore we can give a more correct answer scrupulously respecting the question title:

cp -a  your-folder tmp-folder
rm -rf your-folder
mv tmp-folder your-folder

This will change the creation time (birth time) to the current time. This also updates the change time but keep unchanged the modification and access times.

For information, the change time is sometimes abbreviated as ctime and can be confused with the creation time (crtime or btime). In fact, the change time of a file is the modification time of its corresponding inode. Therefore commands modifying inode content as chmod or chattr also set the change time to current time.

Community's user avatar

answered Aug 26, 2013 at 16:12

oHo's user avatar

oHooHo

2,8332 gold badges17 silver badges13 bronze badges

2

Navigate to the folder in question, let’s say, ~/Documents/myfiles.

$ cd ~/Documents/myfiles

Then do:

$ touch *

This will change the modification time to whenever you executed that command.

Obviously you can make this more specific depending on your use case, e.g.

$ touch *.doc

will only alter the modification time for files with the string ‘.doc’ in their name.

Gaff's user avatar

Gaff

18.3k15 gold badges56 silver badges68 bronze badges

answered Jun 19, 2011 at 0:52

boehj's user avatar

boehjboehj

1,0902 gold badges10 silver badges20 bronze badges

In Linux, if you want to do some thing recursively in directory, or you want to apply some actions on files meeting some criterions,you should try find and xargs

Touch all files in ~/Documents/myfiles (including files in sub directory)

find ~/Documents/myfiles -type f -print0 | xargs -0 touch

answered Jun 19, 2011 at 3:39

Ian Yang's user avatar

1

Каждый файл в Linux ассоциирован с временной меткой, которая показывает время последнего доступа, последней модификации и последнего изменения.

Когда мы создаем новый файл или изменяем существующий или его атрибуты, эта временная метка автоматичекси изменяется

Touch — это команда которая используется для изменения временных меток (время доступа, время модификации и время изменения файла)

Данную команду Вы вряд ли будете использовать часто, но в некоторых случаях она может оказаться очень полезной

1. Создание нового файла используя touch

Вы можете создать пустой файл используя команду touch. Представленный ниже пример создаст файл нулевой длины с именем grnd.txt

$ touch grnd.txt

Вы также можете использовать опцию -с, чтобы избежать создания новых файлов. То бишь если мы используем ключ -c и файл с таким именем не существует, то команда touch не создаст этот файл.  

$ touch -c abcd.txt

Такие команды как ls и find используют информацию о временных метках для вывода и поиска файлов.

Вы также можете создать более одного файла используя только одну команду touch. Пример показывает создание 4 файлов с именами ab de fj kl

2. Изменение метки времени доступа к файлу  (Access)

Мы можем изменить метку о времени доступа к файлу используя ключ -a. По умолчанию установиться текущее системное время.

Сначала запустим команду команду stat, чтобы проследить дальнейшее изменение времени.

$ stat grnd.txt
  File: `grnd.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 3408768     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/  alexey)   Gid: (    4/     adm)
Access: 2012-11-20 14:07:44.948481916 +0400
Modify: 2012-11-20 14:07:44.948481916 +0400
Change: 2012-11-20 14:07:44.948481916 +0400
 Birth: - 

Далее touch с ключом -a

$ touch -a grnd.txt

После выполнения команды опять проверим состояние файла:

$ stat grnd.txt
  File: `grnd.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 3408768     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/  alexey)   Gid: (    4/     adm)
Access: 2012-11-20 14:27:29.264508552 +0400
Modify: 2012-11-20 14:07:44.948481916 +0400
Change: 2012-11-20 14:27:29.264508552 +0400
 Birth: -

3. Изменить метку временя модификации (Modify)

Вы можете изменить время модификации используя ключ -m

Пример:

$ touch -m *.o

Данную команду можно использовать для изменения времени модификации всех объектных файлов, например для использования утилиты make.

То бишь при использование данной команды возможно применение стандартных масок.

Примечание: Невозможно изменить метку времени изменения файла (Change) командой touch.

4. Явно задать время доступа и модификации 

Помимо того, что Вы можете изменить метки на текущее время, Вы также можете задать явные значение этих времен, то бишь то время, которое Вам необходимо. Для этого используются ключи -t и -d

Формат при использовании ключа -t будет — [[CC]YY]MMDDhhmm[.SS] —

$ touch -t [[CC]YY]MMDDhhmm[.SS]

Обозначения данного формата:

CC – Показывает первые две цифры года.

YY – Показывает последние две цифры года. Если значение YY находится между 70 и 99, то значение СС принимается как 19. А если значение YY jn 00 до 37, то СС будет установлено как 20. Невозможно задать дату более 18 Января 2038 года.

MM – Показывает месяц

DD – Указывает дату

hh – час

mm – минуты

SS – секунды

Пример:

$ touch -a -m -t 203710141103.24 grnd.txt

Проверим результат выполнения:

:~$ stat grnd.txt
  File: `grnd.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 3408768     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/  alexey)   Gid: (    4/     adm)
Access: 2037-10-14 11:03:24.000000000 +0400
Modify: 2037-10-14 11:03:24.000000000 +0400
Change: 2012-11-20 15:08:04.992597671 +0400
 Birth: -

Рассмотрим другой пример с более удобочитаемой записью даты:

$ touch -d "2012-10-20 13:13:13.000000000 +0400" grnd.txt

Команда touch будет очень полезна для разработчиков, особенно если работать с Makefiles

5. Копировать метку времени с другого файла.

Вы также можете взять один файл как эталон и обновить метки времени другим файлам, то бишь другие файлы будут иметь метки времени такие же как и у эталонного.  Для этого используется ключ -r

Приведем пример, обновим метки времени файлу ab.txt взяв за эталон метки файла grnd.txt

$ touch ab.txt -r grnd.txt

Надеюсь данный материал будет Вам полезен, удачи!

Команда touch — это простой, но полезный инструмент в Unix-подобных системах, который позволяет пользователям создавать файлы и изменять временные метки непосредственно из терминала. Это одна из самых фундаментальных терминальных команд в Linux, и сисадмины часто используют ее для различных целей. Перед вами краткое руководство, содержащее 15 практических примеров ее использования.

Приведенные ниже примеры помогут вам получить полное представление о команде. Однако, вы должны попробовать использовать эти команды сами, если хотите освоить этот инструмент в целом. Итак, запустите ваш терминал Linux и начните выполнять команды, приведенные ниже, по мере того, как вы о них будете читать.

1. Создание пустого файла

При самом простом использовании touch создает простой файл, который ничего не содержит. Он очень полезен в ряде ситуаций, например, когда вы экспериментируете с файловыми операциями или какими-либо другими командами терминала. Для этого просто передайте имя файла после команды touch.

$ touch test

Так в текущей рабочей директории создается простой пустой файл, который называется test. Вы можете проверить это с помощью команды ls. Вы также можете использовать команду touch для создания пустого файла в любой другой директории, просто передав правильный путь перед именем файла.

$ touch /путь/к/файлу

2. Создание нескольких пустых файлов

С помощью данной команды можно также создавать несколько файлов одновременно из одного терминала. Все, что вам нужно сделать, это передать все имена файлов, которые вы хотите создать один за другим. Взгляните на приведенную ниже команду, чтобы увидеть, как это работает.

$ rm test
$ touch test1 test2 test3 test4 test5

Вышеуказанная команда создаст все пять файлов одновременно. Проверить это можно с помощью команды ls -l в терминале. Вы также можете использовать фигурные скобки для создания нескольких файлов одновременно с помощью touch, как показано в примере, приведенном ниже.

$ rm test1 test2 test3 test4 test5         # сначала удалите файлы
$ touch test{1,2,3,4,5}

Вышеуказанная команда сделает ту же работу, но гораздо более аккуратным способом.

3. Создание и заполнение файла

В приведенном ниже примере показано, как создать простой файл с помощью сенсорного ввода и заполнить его некоторым содержимым. Для этой цели мы используем команду seq в Linux. Но вы можете прибегнуть и к другим методам, если хотите.

$ rm test1 test2 test3 test4 test5         # сначала удалите файлы
$ seq 100 > test

Теперь тестовый файл не пустой, а содержит числа от 1 до 10. Вы можете проверить это с помощью команды Linux cat.

4. Повторение метки времени последнего доступа к файлу

Команда touch позволяет пользователям повторять метки времени времени последнего доступа разных файлов. Для этого необходимо использовать ключ -r. Мы создадим новый файл под названием new, и вместо использования текущего времени мы возьмем значения времени из тестового файла, созданного ранее.

$ touch -r test new
$ ls -l

Вы можете проверить это с помощью команды ls. Вы должны увидеть, что файл new имеет временную метку, более раннюю, чем текущее время, и такую же, как и файл test. Для этого ключа также существует длинная форма, называемая -reference.

5. Изменение метки времени последнего доступа к файлу

Администраторы Linux часто используют команду для изменения метки времени последнего доступа к файлам, созданным ранее. Следующая команда показывает нам, как это сделать. Для этого нам нужно использовать ключ -a. Сначала проверьте метку времени файла test, используя нижеприведенную команду.

$ ls -l test --time=atime

Теперь воспользуйтесь ключом -a, чтобы изменить эту метку времени с помощью команды touch. Обратите внимание, что ключ -time=atime из ls показывает нам время доступа к файлу.

$ touch -a test

Теперь, если вы еще раз проверите временную метку файла test, вы заметите, как она изменилась после выполнения вышеуказанной команды. Это один из наиболее распространенных видов использования в Linux.

6. Изменение метки времени последнего изменения файла

Вы также можете изменить время последнего изменения файла в Linux с помощью этой команды. Для этого необходимо использовать ключ -m. Внимательно посмотрите на пример ниже, чтобы увидеть, как это работает.

$ ls -l test
$ touch -m test

Во-первых, мы просмотрели последнее время последнего изменения файла test с использованием команды ls. Затем мы использовали ключ -m вместе с командой touch, чтобы изменить это значение на текущее время. Проверить это можно, выполнив еще раз команду ls.

7. Изменение даты и времени на текущее время

Вы можете использовать ключи -a и -m вместе для изменения как метки времени последнего доступа к файлу, так и времени последнего изменения файла в Linux. Для демонстрации этого необходимо использовать старый файл. Вы можете просто запустить приведенную ниже команду для одного такого файла, чтобы посмотреть, работает ли это так, как ожидалось или нет.

$ stat /путь/к/старому/файлу

Вы можете просмотреть всю информацию о времени, относящуюся к старому файлу, с помощью команды stat. Она покажет время последнего доступа, время последнего изменения и время последнего изменения атрибутов вашего файла. Теперь используйте следующую команду для изменения даты и времени на текущие.

$ touch -am /путь/к/старому/файлу

Проверьте изменение даты и времени еще раз с помощью команды stat.

$ stat /путь/к/старому/файлу

8. Пропустить создание файла

Ключ -c или -no-create позволяет пропустить создание файла. Хотя вы можете считать это непродуктивным, но многие пользователи используют этот ключ для проверки существования файла.

$ touch -c new-file
$ touch --no-create new-file

При выполнении вышеописанных команд в Вашей рабочей директории не произойдет никаких изменений. Вы можете запустить команду ls еще раз, чтобы проверить это.

9. Изменение даты файла

Мы также можем использовать команду touch, чтобы указать дату файла вручную. Для этого необходимо использовать ключ -d или -date. Приведенная ниже команда показывает, как изменить дату файла на более раннюю с помощью touch.

$ ls -l test
$ touch -d '15 Mar' test

Теперь, если вы снова запустите команду ls, вы увидите, что она показывает дату файла — 15 Марта. Но вы же создали этот файл сегодня, верно? Если Вы посмотрите внимательно, то увидите, что теперь ls показывает только дату, а не время. Вы даже можете использовать эту команду, чтобы установить дату в будущем.

10. Измение даты и времени на пользовательские значения

Ключ -t позволяет нам изменять как дату, так и время файла на персонализированные значения. Таким образом, мы можем изменить несколько параметров, включая год, месяц, дату, час, минуты и секунды. Внимательно посмотрите на следующий пример, чтобы понять, как это работает.

$ ls -l test                        # покажет время и дату файла
$ touch -t 2025 02 01 04 22 test

Теперь снова запустите команду ls, чтобы проверить параметры даты и времени. Аргумент к ключу -t должен быть в формате YYMMDDhhmm. Так как мы установили значения, которые будут в будущем, команда ls не сможет показать параметр времени.

11. Изменение даты с помощью слова

Также можно изменять дату файла в формате слов, например, «yesterday» с помощью команды touch. Для этого просто передайте аргумент ввиде строки к ключу -date. Команда ниже показывает, как изменить дату файла на предыдущий день.

$ touch --date="yesterday" test

Используйте следующую команду для изменения даты на следующий день.

$ touch --date="tomorrow" test

Проверьте даты с помощью команды ls и убедитесь, что они работают, как ожидалось.

12. Копирование метки времени последнего доступа к файлу для символьных ссылок

Ключ -h или -no-dereference позволяет пользователям копировать время последнего доступа к файлу по символическим ссылкам. Однако, этот ключ будет работать только на системах, которые позволяют изменять время символических ссылок.

$ touch -h link

Эта команда не работает во многих дистрибутивах Linux из-за различных проблем с безопасностью.

13. Просмотр справочной информации

Страница справки содержит сводную информацию обо всех возможных вариантах команды. Это очень полезно, так как пользователи могут просто взглянуть на эту страницу и вспомнить, что должен делать тот или иной вариант команды.

$ touch --help

Данная команда покажет страницу справки для linux-команды touch в вашем терминале. Это избавит Вас от необходимости запоминать использование каждого ключа.

14. Просмотр мануала по команде touch

Страница man или руководство содержит подробную информацию обо всех доступных вариантах команд терминала Linux. Вы можете просмотреть эту страницу в любое время, выполнив следующую простую команду.

$ man touch

Она покажет вам подробную документацию о том, как работать с командой touch в Linux системах. Обращайтесь к этой документации всякий раз, когда у вас возникнет путаница в отношении использования ключей.

15. Просмотр информации о версии

Вы можете просмотреть, какая версия команды touch установлена в вашей системе, с помощью приведенной ниже команды. Она поможет вам определить различную информацию об установленном пакете.

$ touch --version

Заключительные слова

Команда touch — одна из самых простых команд терминала Linux. Она очень проста в изучении благодаря ограниченному количеству ключей. Однако, она может быть действительно полезна в ряде ситуаций, когда системные администраторы используют эту команду для управления временными метками файлов. Наши редакторы подробно проанализировали различные подобные примеры. Надеюсь, мы смогли предоставить вам необходимую информацию, которую вы искали в этом руководстве. Сообщите нам, если у вас возникнут вопросы по этой команде, в разделе комментариев ниже.

Понравилась статья? Поделить с друзьями:

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

  • Как изменить дату создания файла ворд
  • Как изменить дату создания файла видеозаписи
  • Как изменить дату создания файла аксесс
  • Как изменить дату создания файла txt
  • Как изменить дату создания файла solidworks

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии