Рейтинг:0

Rsync: включить только определенные файлы из всех подкаталогов

флаг pe

Одна папка с именем android с неопределенным количеством подкаталогов, содержащих несколько файлов, некоторые из которых являются APK. Одна папка с именем windows с неопределенным количеством подкаталогов и несколькими файлами, некоторые из них EXE-файлы.

Я хотел бы использовать rsync для копирования всей структуры папок, но копировать только файлы APK и EXE, ничего больше.

я использую --исключить-из вариант rsync для этого, но файлы APK вообще не копируются. Я использовал эту строку справочной страницы, чтобы добиться того, чего я хочу: Комбинация "+ */", "+ *.c" и "- *" будет включать все каталоги и исходные файлы C, но ничего больше (см. также параметр --prune-empty-dirs)

В результате получается следующий файл:

+ /android/**/*.apk
+ /андроид/*/
- /андроид/*

Но на самом деле ничего не копируется. Может ли кто-нибудь указать мне правильное направление здесь?

Рейтинг:3
флаг id

Вы должны сопоставить любой файл и каталог из корня, чтобы быть включенным или исключенным. А потом исключить все остальное. В вашем случае примерно так:

➢ ~ найти /tmp/source 
/tmp/источник
/tmp/источник/№2
/tmp/источник/№1
/tmp/источник/no3
/tmp/источник/андроид
/tmp/источник/андроид/но5
/tmp/источник/android/yes1.apk
/tmp/источник/андроид/но6
/tmp/источник/андроид/но7
/tmp/источник/андроид/каталог1
/tmp/источник/android/dir1/no9
/tmp/источник/android/dir1/yes2.apk
/tmp/источник/android/dir1/no8
/tmp/источник/андроид/каталог1/каталог2
/tmp/источник/android/dir1/dir2/yes3.apk
mkdir/tmp/пункт назначения

rsync \
    -f "+ /андроид/" \
    -f "+ /android/*.apk" \
    -f "+ /андроид/**/" \
    -f "+ /android/**/*.apk" \
    -f "- /**" \
    -ав \
/tmp/источник/ /tmp/назначение/

И вуаля :

отправка добавочного списка файлов
./
андроид/
android/yes1.apk
андроид/дир1/
android/dir1/yes2.apk
андроид/каталог1/каталог2/
android/dir1/dir2/yes3.apk
Nidhoegger avatar
флаг pe
Потрясающий! Большое спасибо!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.