1

Я пытаюсь rsync включить все каталоги, но только один из каждого из этих подкаталогов, которые содержат определенные файлы. Например,

rsync -auvz --include '*' --include '*/ sure_sub/' --include '*/ sure_sub/ *. java' --exclude '*' source dest

Но это дает мне все каталоги и подпрограммы со всеми их файлами, так как я включаю все в свое первое включение, я так понимаю. Чтобы объяснить более четко, есть группа студентов, и каждый из них имеет все свои лабораторные и домашние задания в своих собственных каталогах. Я хочу получить подкаталог соответствующего задания (например, homework09) и все файлы этого подкаталога. Я довольно зеленый с rsync, но это поможет мне разобраться с сотнями файлов и сэкономит мне много времени.

1 ответ1

0

Использование простых правил --include и --exclude здесь не сработает. Но rsync также предлагает --filter .

Я думаю, что rsync -ruvpgot --filter '+ *.java' certain_sub/ dest/ будет делать то, что вы хотите, т.е. он копирует все каталоги, даже пустые, но внутри каталогов копируются только файлы, соответствующие шаблону "* .java". Смотрите другие примеры от man rsync под заголовком ПРАВИЛА ФИЛЬТРА.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .