copia ricorsivamente tranne la directory nascosta


13

Come copio in modo ricorsivo cp -rf *, ma escludendo le directory nascoste (directory che iniziano con.) E il loro contenuto?

Risposte:


6

Potresti semplicemente copiare tutto con

cp -rf 

e quindi eliminare le directory nascoste nella destinazione con

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

In alternativa, se hai qualche tar avanzato (es. Tar GNU), puoi provare a usare tar per escludere alcuni pattern. Temo però che non sia possibile escludere solo directory nascoste, ma includere file nascosti.

Ad esempio qualcosa del genere:

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

A proposito, GNU tar ha uno zoo di opzioni di stile di esclusione. Il mio preferito è

--exclude-vcs

30

Buone opzioni per la copia di un albero di directory ad eccezione di alcuni file sono:

  • rsync : questo è fondamentalmente cp più un sacco di possibilità di esclusione.

    rsync -a --exclude='.*' /source/ /destination
    
  • pax : ha alcune funzionalità di esclusione ed è in POSIX, quindi dovrebbe essere disponibile ovunque (tranne per il fatto che alcune distribuzioni Linux non lo includono nella loro installazione predefinita per qualche motivo).

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.