Comment copier récursivement comme cp -rf *
, mais en excluant les répertoires cachés (répertoires commençant par.) Et leur contenu?
la source
Comment copier récursivement comme cp -rf *
, mais en excluant les répertoires cachés (répertoires commençant par.) Et leur contenu?
Vous pouvez simplement tout copier avec
cp -rf
puis supprimez les répertoires cachés à la destination avec
find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf
Alternativement, si vous avez du tar avancé (par exemple GNU tar), vous pouvez essayer d'utiliser tar pour exclure certains modèles. Mais je crains qu'il ne soit pas possible d'exclure uniquement les répertoires cachés, mais d'inclure des fichiers cachés.
Par exemple quelque chose comme ça:
tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x
Btw, GNU tar a un zoo d'options de style d'exclusion. Mon préféré est
--exclude-vcs
Les bonnes options pour copier une arborescence de répertoires, à l'exception de certains fichiers, sont:
rsync : c'est essentiellement cp plus une tonne de possibilités d'exclusion.
rsync -a --exclude='.*' /source/ /destination
pax : il a quelques capacités d'exclusion, et il est en POSIX donc devrait être disponible partout (sauf que certaines distributions Linux ne l'incluent pas dans leur installation par défaut pour une raison quelconque).
cd /source && mkdir -p /destination && \
pax -rw -pp -s '!.*/\..*!!' . /destination
alternativement , cp
vous pouvez utiliser rsync
avec --exclude=PATTERN
.