Linux рекурсивное изменение времени всех файлов touch

Содержание
  1. Как рекурсивно изменить метки времени папок на самый новый файл?
  2. 15 полезных примеров использования команды touch в Linux системах
  3. Практическое использование команды touch для пользователей Linux
  4. 1. Создание пустого файла
  5. 2. Создание нескольких пустых файлов
  6. 3. Создание и заполнение файла
  7. 4. Повторение метки времени последнего доступа к файлу
  8. 5. Изменение метки времени последнего доступа к файлу
  9. 6. Изменение метки времени последнего изменения файла
  10. 7. Изменение даты и времени на текущее время
  11. 8. Пропустить создание файла
  12. 9. Изменение даты файла
  13. 10. Измение даты и времени на пользовательские значения
  14. 11. Изменение даты с помощью слова
  15. 12. Копирование метки времени последнего доступа к файлу для символьных ссылок
  16. 13. Просмотр справочной информации
  17. 14. Просмотр мануала по команде touch
  18. 15. Просмотр информации о версии
  19. Заключительные слова
  20. Использование команды touch в Linux
  21. Используем команду touch в Linux
  22. Синтаксис
  23. Генерация пустых файлов
  24. Установка времени последнего доступа
  25. Установка времени последнего изменения
  26. Запрет на создание объекта
  27. Установка времени доступа и изменений
  28. Перенос временных меток выбранного файла
  29. Создание файла с указанным временем

Как рекурсивно изменить метки времени папок на самый новый файл?

Мне было интересно, если кто-нибудь знает, как рекурсивно изменять временные метки папок на основе последней найденной метки времени файлов в этой папке.

В папке «(1997-05-20)« Цвет и форма »отметка времени будет иметь значение 2010-04-18 00:52.

Вы можете использовать touch -r метку времени другого файла вместо текущего времени (или touch —reference=FILE )

Вот два решения. В каждом решении первая команда изменяет время модификации каталога на время изменения самого нового файла непосредственно под ним, а вторая команда рекурсивно просматривает все дерево каталогов. Перейдите в каталог ( cd ‘. /(1997-05-20) The Colour and The Shape’ ) перед выполнением любой из команд.

В zsh (удалите, D чтобы игнорировать точечные файлы):

В Linux (или в более общем случае с GNU find):

Однако обратите внимание, что эти имена не допускают символов новой строки в именах файлов

Это не «рекурсивно», это просто изменение всех временных меток в папке. Если это то, что вы имеете в виду, есть два шага.

stat -c ‘%Y’ filename выведет метку времени filename и stat -c ‘%Y %n’ * выведет метку времени и имя файла для каждого файла в папке, так что будет найдено имя файла последнего измененного файла в текущей папке:

Если подумать, есть способ проще получить максимальную отметку времени в папке:

Затем вы хотите изменить все файлы в папке, чтобы иметь ту же метку времени, что и этот файл. touch -r foo bar изменится, bar чтобы иметь такую ​​же измененную временную метку, как foo , поэтому это изменит все файлы в папке, чтобы иметь ту же измененную временную метку, что и ваш последний измененный файл:

Итак, однострочник это:

Я собрал работу вместе и теперь:

Это будет скрипт, который изменяет все каталоги внутри /tmp/test/ на временную метку самого нового файла внутри каждого каталога:

Вы можете добавить несколько тестовых файлов в / tmp следующим образом:

Я использую этот скрипт, чтобы рекурсивно устанавливать метки времени папок для последнего содержимого. (Это очень похоже на ответ Жиля):

Я взял команду @Gilles zsh и улучшил ее работу в подпапках, но кажется, что zsh ужасно неэффективен для части ** / * (FDod).

Кавычки позволяют правильно работать с записями каталога, содержащими пробелы и табуляции. FD заставляет его находить непустые каталоги, в том числе начинающиеся с. Od заставляет его искать в глубину , чтобы метки времени родительской папки корректно обновлялись.

При тестировании я заметил, что производительность и объем памяти для ** / * (FDod) были безумными (более 1,4 ГБ для всего 650 тыс. Папок), и он полностью прочитал перед тем, как начать трогать папки. После замены на поиск / чтение он стал намного быстрее, не сжег память и начал почти сразу.

Если вы не запускаете его в скрипте, замените «$ @» на те папки, из которых вы хотите его запустить.

Мне не очень понравилась незаметность команд оболочки, и я быстро сделал это на python.

Он рекурсивно устанавливает все каталоги mtimes в новейший неисключенный файл / dir mtime внутри.

Источник

15 полезных примеров использования команды touch в Linux системах

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

Практическое использование команды touch для пользователей Linux

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

Читайте также:  После загрузки рабочего стола компьютер зависает windows 10

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Как поменять пароль рута линукс

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Использование команды touch в Linux

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

Используем команду touch в Linux

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

Синтаксис

Обратим внимание на стандартный вид строки при вводе команды touch. Она выглядит так: touch + [Опции] + Файл . Если же действие нужно осуществить от имени суперпользователя, в начале строки придется добавить sudo, а после ее активации написать пароль, подтверждающий учетную запись. Что касается дополнительных опций, то стоит отметить следующие:

  • ––help и ––version используются редко. Первая опция даст возможность прочесть официальную документацию, а вторая отобразит текущую версию утилиты.
  • -a отвечает за изменение времени доступа к указанному файлу.
  • -m изменяет время модификации.
  • -c определяет, что объект с указанным именем создан не будет.
  • -r позволит использовать время доступа и модификации указанного файла.
  • -t предназначена для изменения даты и времени путем ручного ввода.
  • -d использует дату и время, заданные в виде строки.
Читайте также:  Ubuntu with linux download

Теперь вы знаете абсолютно обо всех доступных опциях рассматриваемой сегодня команды. Давайте перейдем к изучению параметров, чтобы разобраться со всеми основными действиями, выполняемыми при помощи данной утилиты.

Генерация пустых файлов

Для начала разберемся с действием команды touch без применения каких-либо аргументов — так она создает пустой файл размером 0 байт с указанным названием.

    Откройте «Терминал» удобным для вас образом, например, через значок в меню приложений или комбинацию клавиш Ctrl + Alt + T.

После активации этой команды, если она прошла без каких-либо ошибок, появится новая строка для ввода, а в текущем расположении создастся соответствующий объект.

Вы можете добавить несколько файлов одновременно, по очереди написав название каждого, чтобы получилась примерно такая строка: touch testfile1 testfile2 testfile3 .

Имеется одна особенность, которую тоже следует учитывать. Если появилась надобность создать несколько файлов с одинаковым названием, но с разными цифрами в конце, как это было показано выше, проще использовать такой тип написания: touch testfile <1..6>.

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

Установка времени последнего доступа

Как вы уже знаете, одна из опций рассматриваемой команды разрешает изменить время доступа к файлу на текущее. Осуществляется это путем ввода всего одной строки которая имеет вид touch -a file , где file — имя необходимого объекта. Количество перечисляемых элементов для одной строки не ограничивается. При этом время последнего изменения не устанавливается, если только в данной строке не дописана дополнительная опция -m, о ней мы и поговорим далее.

Установка времени последнего изменения

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

Запрет на создание объекта

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

Установка времени доступа и изменений

Приведенные выше опции -a и -m позволяли только изменить параметры файла, установив текущее время, однако имеется возможность задать абсолютно любое время с точностью до секунды. При этом главное — соблюдать правило ввода: [[ВВ]ГГ]ММДДччммм[.сс] , где ВВ — первые две цифры года, ГГ — вторые, ММ — месяц, ДД — дата, чч — часы, мм — минуты, сс — секунды. Необходимая команда получается такой: touch -c -t 01261036 file .

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

Перенос временных меток выбранного файла

Если вы ознакомились с приведенной выше информацией, то знаете, что опция -r разрешит перенести временные метки одного объекта на другой. Осуществляется это через строку: touch -r file1 file2 , где file1 — уже имеющийся файл с определенными временными метками, а file2 — новый объект, к которому они и будут применены.

Создание файла с указанным временем

В конце данного материала отметим, что по умолчанию touch создает файлы с актуальным временем, однако это можно изменить, применив всего одну опцию: touch -t 201912101830.55 file , где 201912101830.55 — точно указанное время на ваш выбор, а file — название того самого объекта или объектов, если они будут представлены в виде списка.

Теперь вы знакомы с командой touch, которая активно используется в Linux для создания файлов. Это могут быть как отдельные тестовые элементы, так и объекты, добавленные для определенных целей. Пользователь уже сам решает, в каком русле применять возможности утилиты. Если вас заинтересовала тема основных команд этой операционной системы, предлагаем изучить представленные далее материалы.

Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Оцените статью