Estoy tratando de copiar todos los archivos en el directorio A al directorio B. Todos los archivos en el directorio A comienzan con punto, por ejemplo:
A/.a
A/.b
A/.c
que encontré si uso: cp A/* Bsiempre obtengo error:
cp: cannot stat 'A/*': no such file or directory
Parece que no hay opción de cpque lspara manejar las entradas iniciadas con el punto, alguien tiene idea de cómo solucionarlo?

-r. Sin-r, simplemente se saltará los directorios.-Rdebería funcionar bien. Si cree que está mal, explique por qué.Si bash, puede configurar
dotglobantes de copiarO un lenguaje de programación
Si no quieres configurar dotglob, solo
fuente
Aestán ocultos. Él solo quiere copiar eso.Lo que estás buscando es más parecido a:
Esto coincidirá con todos los archivos de puntos, pero no con "." o "..". La mayoría de las soluciones anteriores están bien siempre que no trabaje de forma recursiva. Pero tan pronto como quieras hacer algo como:
Sin omitir "..", copiará todo desde el directorio principal hacia abajo, incluidos los archivos sin puntos.
fuente
.ao.x. El patrón de globbing más corto que he encontrado que coincide con todos los archivos de puntos, excepto.y..es.[^.]*.Acabo de intentar lo siguiente y funciona solo encontrar ...
fuente
A/.yA/..como parámetros acp, lo que podría ser problemático en el caso de OP también tiene que copiar los directorios (usandocp -r)Eso no
cpes culpa , es bash: bash se expande*en todos los.archivos no ocultos (es decir, no comienzan con ).Bash se expandirá
.*(por lo tantoA/.*, en su caso) con todos los archivos que comienzan., pero desafortunadamente también incluye.y..(directorios actuales y principales) que probablemente querrá omitir. (Tenga en cuenta que otros shells, como zsh, no los incluirían, y IIRC también golpean, después de configurar algunas opciones).Una solución fácil podría ser eliminar
.y..de archivos que coincidan.*, de una manera (muy) hacky como esta:o este (probablemente más limpio: se usa
findpara encontrar los archivos para copiar):pero probablemente encontrarás soluciones más limpias.
fuente
for loopluego crear ungrepproceso adicional solo para hacer un trabajo comocp A/.*?cpignorará el "." y directorios "..".Si todos comienzan con un punto, simplemente use
A/.*:¡Espero que esto ayude!
fuente
Puedes usar este script
fuente
dupdo:
lista:
Listar archivos sin directorios descendentes:
fuente
Debe excluir y .. de la lista de archivos pasados a cp!
Esto es seguro:
fuente
Este es un hilo viejo ... pero siempre he podido copiar todos los archivos. Incluyendo archivos / carpetas que comienzan con '.'
Ejemplo copiará todos los archivos y carpetas:
cp -aup /root/.* / backup / root /
fuente