Exclui todos os arquivos de sublinhado de ponto do rsync

1

Como posso usar rsync -av , mas excluir todos os arquivos que começam com underscore de ponto ( ._example.txt ) e também ignorar .DS_Store arquivos?

    
por cclloyd 16.07.2018 / 07:42

3 respostas

2

Você pode tentar --exclude="<filePattern>"

rsync -av --exclude="._*" --exclude=".DS_Store" <source> <destination>
    
por 16.07.2018 / 07:50
0

Usar --exclude='._*' faria com que rsync ignorasse todos os arquivos e diretórios com ponto-sublinhado no início de seus nomes. Com --exclude='.DS_Store' , você ignoraria o outro tipo de arquivo.

    
por 16.07.2018 / 07:53
0

Se você deseja excluir arquivos e diretórios que correspondem a ._* e .DS_Store , as respostas anteriores são suficientes:

rsync -av --exclude='._*' --exclude='.DS_Store' src dst

Por outro lado, para responder à sua pergunta exatamente como solicitado, esse snippet excluirá os arquivos que correspondem aos seus critérios e ainda incluirá os diretórios correspondentes a _* e .DS_Store :

rsync -av --include '.DS_Store/' --include '._*/' --exclude '.DS_Store' --exclude '._*' src dst

Exemplo trabalhado

# Set up the example directory tree
mkdir -p src/a/.DS_Store src/a/._example.dir dst
touch src/.DS_Store src/._example.txt src/a/.DS_Store/keep src/a/._example.dir/keep src/item src/a/another

# Show what we have
find src -type f

    src/.DS_Store
    src/._example.txt
    src/a/.DS_Store/keep
    src/a/._example.dir/keep
    src/a/another
    src/item

# Copy it. Omit matching files but keep the directories
rsync -av --include '.DS_Store/' --include '._*/' --exclude '.DS_Store' --exclude '._*' src/ dst

    sending incremental file list
    ./
    item
    a/
    a/another
    a/.DS_Store/
    a/.DS_Store/keep
    a/._example.dir/
    a/._example.dir/keep

# Tidy up
rm -rf src dst
    
por 16.07.2018 / 10:07