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

Вы не можете. Вам нужны две команды.

find ./my_web_app_project -type d -exec chmod 755 {} \;
find ./my_web_app_project -type f -exec chmod 644 {} \;

Редактировать:

См. Ответ G-Man, так как он намного более правильный.

1
29.08.2016, 20:38
2 ответа

Вы можете использовать find и cpio в режиме сквозной передачи:

 find  image/ -mtime -365 | cpio -pd /target_dir

EDIT: удалено ненужное * из пути поиска.

2
27.01.2020, 23:25

Если вы уже находитесь в каталоге image , то find image / * ... означает проблему. Вместо относительных путей используйте find. (и т. Д.), Где "." обозначает текущий каталог и его дерево подкаталогов, или, что еще лучше, используйте абсолютные пути:

$ find /full/path/to/imagedir -mtime -365 -execdir cpio -pdv {} /absolute/path/to/targetdir \;

При условии, что у вас есть надлежащее разрешение на это, указанное выше должно копировать все файлы, измененные недавно, чем 365 * 24 часа (до сегодняшнего дня) в yr target-directory с сохранением структуры каталогов.

Опция -execdir более безопасна, чем -exec , делает то же самое, но выполняется из каталога, в котором находится выбранный файл.

Вы можете дополнительно ограничить анализируемые файлы с помощью find, указав параметры -type f \ ("-name \ *. Jpg -o -name \ *. Gif \) в приведенном выше cmd.

Параметры cpio:

-p for passthrough (does not make an archive out of the set of dound files)
-d to preserve the directory structure
-v to visualize files being copied

См. Страницу руководства для find , на https://www.gnu.org/software/cpio/manual/cpio.html для получения полного онлайн-руководства cpio , и помните, что www.startpage.com - это друг, который не делает вас продуктом, когда вы ищете ответы.

1
27.01.2020, 23:25

Теги

Похожие вопросы