Risposte:
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
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
in alternativa a cp
te potresti usare rsync
con un --exclude=PATTERN
.