copiar recursivamente excepto directorio oculto


13

¿Cómo copio recursivamente me gusta cp -rf *, pero excluyendo directorios ocultos (directorios que comienzan con) y sus contenidos?

Respuestas:


6

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

30

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
    

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.