Всем привет!
Хочу изменить даты доступа\изменения к файлам\папкам желательно рекурсивно.
Кто нить знает как?
Изменить даты доступа\изменения к файлам\папкам
Изменить права к каталогам на дату 01 января 2011 года
find /DIR -type d -exec touch -d 20110101 {} \;
Изменить права к файлам на дату 01 января 2011 года
find /DIR -type f -exec touch -d 20110101 {} \;
P.S. Опция -a для команды touch меняет только время доступа, опция -m для команды touch меняет только время модификации.
Хотя в комментарии к изменению моей репутации уважаемый drBatty написал, что добавить нечего, я попробую. wink
И это касается не только этого случая, но общего применения конструкции find ... -exec ... {} \;
В некоторых случаях (и в данном тоже) правильнее запускать команду так find ... -exec ... {} +
find /DIR -type f -exec touch -d 20110101 {} +
find /DIR -type d -exec touch -d 20110101 {} +
тогда команда touch будет применяться не каждому найденному файлу или каталогу, а ко всем аргументам одновременно, что, по идее, должно экономить время выполнения и ресурсы.
тогда команда touch будет применяться не каждому найденному файлу или каталогу, а ко всем аргументам одновременно, что, по идее, должно экономить время выполнения и ресурсы.
а вот тут мне есть что добавить - find -exec touch {} + вовсе не засунет все файлы внутрь touch (как сделает тупая звёздочка), она будет пихать файлы внутрь команды отдельно размеченными максимальными порциями, как делает xargs. В итоге мы достигнем максимального быстродействия, и избежим переполнения.
В данном случае это не слишком важно (быстродействие), но если мы скажем добавляем файлы в архив, это увеличивает скорость примерно в 50..100 раз!
да, если имена файлов кривые, приходится использовать
[console]$ find -print0 | xargs -0 command[/console]
иначе не работает :(