copiar recursivamente, exceto diretório oculto


13

Como copio recursivamente cp -rf *, mas excluindo diretórios ocultos (diretórios começando com.) E seu conteúdo?

Respostas:


6

Você pode copiar tudo com

cp -rf 

e exclua os diretórios ocultos no destino com

find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf

Como alternativa, se você tiver algum tar avançado (por exemplo, GNU tar), tente usar o tar para excluir alguns padrões. Mas receio que não seja possível excluir apenas diretórios ocultos, mas incluir arquivos ocultos.

Por exemplo, algo como isto:

tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x

Aliás, o GNU tar possui um zoológico de opções de estilo de exclusão. Meu favorito é

--exclude-vcs

30

Boas opções para copiar uma árvore de diretórios, exceto para alguns arquivos, são:

  • rsync : isso é basicamente cp mais uma tonelada de possibilidades de exclusão.

    rsync -a --exclude='.*' /source/ /destination
    
  • pax : possui alguns recursos de exclusão e está no POSIX, portanto deve estar disponível em qualquer lugar (exceto que algumas distribuições Linux não o incluem em sua instalação padrão por algum motivo).

    cd /source && mkdir -p /destination && \
    pax -rw -pp -s '!.*/\..*!!'  . /destination
    

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.