¿Cómo copio recursivamente me gusta cp -rf *
, pero excluyendo directorios ocultos (directorios que comienzan con) y sus contenidos?
fuente
¿Cómo copio recursivamente me gusta cp -rf *
, pero excluyendo directorios ocultos (directorios que comienzan con) y sus contenidos?
Podrías copiar todo con
cp -rf
y luego eliminar directorios ocultos en el destino con
find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf
Alternativamente, si tiene algo de tar avanzado (por ejemplo, GNU tar), podría intentar usar tar para excluir algunos patrones. Pero me temo que no es posible excluir solo directorios ocultos, sino incluir archivos ocultos.
Por ejemplo algo como esto:
tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x
Por cierto, GNU tar tiene un zoológico de opciones de estilo de exclusión. Mi favorito es
--exclude-vcs
Las buenas opciones para copiar un árbol de directorios a excepción de algunos archivos son:
rsync : esto es básicamente cp más un montón de posibilidades de exclusión.
rsync -a --exclude='.*' /source/ /destination
pax : tiene algunas capacidades de exclusión, y está en POSIX, por lo que debería estar disponible en todas partes (excepto que algunas distribuciones de Linux no lo incluyen en su instalación predeterminada por alguna razón).
cd /source && mkdir -p /destination && \
pax -rw -pp -s '!.*/\..*!!' . /destination
Alternativamente a cp
usted podría utilizar rsync
con un --exclude=PATTERN
.