¿Hay alguna manera de usar el comando 'cp' para copiar un directorio y excluir ciertos archivos / subdirectorios dentro de él?
fuente
¿Hay alguna manera de usar el comando 'cp' para copiar un directorio y excluir ciertos archivos / subdirectorios dentro de él?
Uso rsync:
rsync -avr --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
Tenga en cuenta que el uso sourcey source/son diferentes. Una barra final medio para copiar el contenido de la carpeta sourceen destination. Sin la barra inclinada final, significa copiar el origen de la carpeta en destination.
Alternativamente, si tiene muchos directorios (o archivos) para excluir, puede usar --exclude-from=FILE, donde FILEestá el nombre de un archivo que contiene archivos o directorios para excluir.
--exclude también puede contener comodines, como --exclude=*/.svn*
Copiado de: https://stackoverflow.com/a/2194500/749232
Si quieres usarlo cpsolo:
find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'
Esto supone que la estructura del directorio de destino es la misma que la del origen.
Copiado de: https://stackoverflow.com/a/4586025/749232
Al final del juego, pero aquí hay una solución muy diferente que usa bash y cp simples: puede usar una especificación de archivo global mientras se ignoran algunos archivos.
Suponga que el directorio contiene los archivos:
$ ls *
listed1 listed2 listed3 listed4 unlisted1 unlisted2 unlisted3
Usando la variable GLOBIGNORE :
$ export GLOBIGNORE='unlisted*'
$ ls *
listed1 listed2 listed3 listed4
O con exclusiones más específicas:
$ export GLOBIGNORE='unlisted1:unlisted2'
$ ls *
listed1 listed2 listed3 listed4 unlisted3
O usando coincidencias negativas :
$ ls !(unlisted*)
listed1 listed2 listed3 listed4
Esto también admite varios patrones inigualables:
$ ls !(unlisted1|unlisted2)
listed1 listed2 listed3 listed4 unlisted3
shopt -s extglobademás, no necesita exportarGLOBIGNORE: se supone que modifica el comportamiento del shell actual, a la mayoría de los programas secundarios no les importaría.