Actualmente estoy tratando de find(y copiar) todos los archivos y la estructura de carpetas que coinciden con un patrón específico, en un directorio específico y ¡estoy tan cerca!
Específicamente, quiero copiar recursivamente todas las carpetas que no comiencen con un carácter '_' desde una ruta especificada.
find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;
En / source / path / with / directorios / path hay directorios específicos de la máquina que comienzan con '_' y otros, y solo estoy interesado en copiar los otros. Por una razón más allá de mí, el comando find devuelve el directorio / source / path / with / directorios / y, por lo tanto, copia su contenido, los directorios comienzan con '_' incluido.
Alguien tiene una pista de por qué es eso?
Gracias,
Pascal

Respuestas:
finddevuelve la ruta raíz porque coincide con sus criterios, es decir, es un directorio y no comienza con_.Estás buscando
-mindepth 1, sospecho:Referencia: encontrar página de manual
fuente
Cambiar de:
a:
De esa manera
/source/path/with/directoriesno se incluirán.Esto
shopt -s dotglobes para que*también coincida con los archivos y directorios que comienzan con un.(archivos ocultos, directorios).Y todo está envuelto en un sub-shell
(...)para limitar el efectoshoptsolo dentro del sub-shell, de lo contrario, tendría que deshacerlo más tardeshopt -u dotglob.fuente
.. Tampoco intentes.*, o combinarás muchas otras cosas que nunca quisiste. ;-)shopt.