Rsync включить исключить

только с sed, но вы должны выбрать последовательность символов, которая никогда не будет в ваших данных.

 ( echo 'zzzaaaaadddd' ; 
   echo 'ssssaaaaajaaaaakaaaaa'; 
   echo 'ssssaaaaaaaaaakaaaaa';  ) | \
      sed '/aaaaa.*aaaaa/ { s/aaaaa/_=|=_/; s/aaaaa/GGGGG/g; s/_=|=_/aaaaa/ }'

zzzaaaaadddd
ssssaaaaajGGGGGkGGGGG
ssssaaaaaGGGGGkGGGGG

объяснение:

  • будет затронута строка как минимум с 2-кратным значением aaaaa
  • замените aaaaa строкой _=|=_, которой у вас никогда не будет
  • замените другие ааааа на то, что вы хотите GGGGG
  • заменить обратно _=|=_на ааааа
1
02.03.2021, 15:00
1 ответ

На данный момент вы очень близки к решению:

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/*.

Дело в том, чтоrsyncиспользует первый шаблон сопоставления , поэтому, включая все под another_dir, вы фактически включаете скучные вещи и файлы.RData. Вам нужно только изменить порядок правил фильтрации:

rsync -r -v --dry-run --include="dir/" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/*.

Поскольку порядок имеет значение, люди помещают правила для исключения файлов по расширению в начале и правила для исключения всех файлов в конце .

2
18.03.2021, 22:27

Теги

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