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

iMac (mid 2011)
openSUSE 13.1 (Bottle) (x86_64)

Быть свободным — быть Гиком

2 (11.03.2011 18:49:31 отредактировано Lupo Alberto)

Изменить права к каталогам на дату 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 меняет только время модификации.

Был, был и весь вышел...

3

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

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

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

Был, был и весь вышел...

4

Lupo Alberto пишет:

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

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

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

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

5

да, если имена файлов кривые, приходится использовать

 Консоль:
$ find -print0 | xargs -0 command

иначе не работает ac

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)