Como posso rsync apenas arquivos de subdiretórios diferentes que contêm uma string específica no nome do arquivo?

3

Eu tenho uma árvore de subdiretórios, alguns dos quais contêm um arquivo com a palavra "template" como parte do nome. Eu quero rsync-los para a mesma árvore de subdiretórios em um local diferente.

por exemplo: Fonte:

curfolder/dir1/dir2/blah_template.ext
curfolder/dir3/dir4/foo_template.blah

Destino pretendido:

destfolder/dir1/dir2/blah_template.ext
destfolder/dir3/dir4/foo_template.blah

Este comando não funcionou; Ele colocou todos os arquivos na base da base, em vez de nos subdiretórios corretos:

rsync -av curfolder/*/*/*template* destfolder

Então, eu acho que preciso de um filtro como este, mas isso não está funcionando (parece apenas sincronizar tudo):

rsync -av -f"+ *template*" curfolder destfolder
    
por Highly Irregular 19.02.2012 / 22:47

1 resposta

1

Uma maneira de fazer isso:

rsync -av --include "*/" --include="*_template*" --exclude="*" --prune-empty-dirs curfolder/ destfolder/  

homem do rsync

o que faz expresso em palavras:

  1. inclua todas as pastas
  2. inclua tudo que corresponda a _template
  3. exclui tudo o mais
  4. excluir pastas vazias

As duas inclusões estão tomando precedência sobre a exclusão, portanto, a exclusão apenas corresponde a tudo que as inclusões não corresponderam.

    
por 19.02.2012 / 23:29

Tags