LinuxForum.Fans
Тема

Изменить даты доступа\изменения к файлам\папкам

Автор: u___________________ 5 сообщений 3640 просмотров
#139025

Всем привет!
Хочу изменить даты доступа\изменения к файлам\папкам желательно рекурсивно.
Кто нить знает как?

#139029

Изменить права к каталогам на дату 01 января 2011 года

text

find /DIR -type d -exec touch -d 20110101 {} \;

Изменить права к файлам на дату 01 января 2011 года

text

find /DIR -type f -exec touch -d 20110101 {} \;

P.S. Опция -a для команды touch меняет только время доступа, опция -m для команды touch меняет только время модификации.

#139051

Хотя в комментарии к изменению моей репутации уважаемый drBatty написал, что добавить нечего, я попробую. wink
И это касается не только этого случая, но общего применения конструкции find ... -exec ... {} \;
В некоторых случаях (и в данном тоже) правильнее запускать команду так find ... -exec ... {} +

text

find /DIR -type f -exec touch -d 20110101 {} +
find /DIR -type d -exec touch -d 20110101 {} +

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

#139054
Lupo Alberto написал:
тогда команда touch будет применяться не каждому найденному файлу или каталогу, а ко всем аргументам одновременно, что, по идее, должно экономить время выполнения и ресурсы.

а вот тут мне есть что добавить - find -exec touch {} + вовсе не засунет все файлы внутрь touch (как сделает тупая звёздочка), она будет пихать файлы внутрь команды отдельно размеченными максимальными порциями, как делает xargs. В итоге мы достигнем максимального быстродействия, и избежим переполнения.

В данном случае это не слишком важно (быстродействие), но если мы скажем добавляем файлы в архив, это увеличивает скорость примерно в 50..100 раз!

#139055

да, если имена файлов кривые, приходится использовать
[console]$ find -print0 | xargs -0 command[/console]
иначе не работает :(

Войдите или зарегистрируйтесь, чтобы ответить.