rsync с фильтром для включения только определенных типов файлов для определенных деревьев каталогов

Esto será menos eficiente, pero la tarea encaja muy bien con cutypaste

paste -d '|' <(cut -d'|' -f1-2 file.log) <(cut -d'|' -f3 file.log | grep -oP 'modesc=\K\S+')
0
21.05.2019, 20:20
1 ответ

Вы уже используете include; каждая строка, начинающаяся с +, является правилом включения; каждая строка, начинающаяся с -, является правилом исключения.

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

+ /dir_1/***
+ /dir_2/
+ /dir_2/**.c++
+ /dir_2/**.h
+ /dir_2/**/
- /dir_2/**
+ /dir_etc/***
- /*

Сначала вы должны убедиться, что dir_2включено:+ /dir_2/.

Затем вы включаете все *.c++и все *.hфайлы в этом dir_2; помните, что **соответствует всем символам, включая косую черту.

Затем вы также должны включить все каталоги в пределах dir_2:+ /dir_2/**/, иначе файлы в подкаталогах не будут найдены, так как эти подкаталоги исключены.

Наконец, исключите все остальные файлы.

Обратите внимание, что вы также можете использовать файлы слияния каталогов -, поэтому rsync будет проверять каждый каталог на наличие заданного имени файла и, если найдет, использовать этот файл в качестве дополнительного фильтра для этого каталога. См. параметр -Fна странице руководства.

1
28.04.2021, 23:33

Теги

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