¿Cómo evitar copiar “..” mientras se usa el comando cp en la terminal?

¿Cómo evitar copiar “..” mientras se usa el comando cp en la terminal?

Estoy usando CentOS7 y cuando uso el comando

cp /root/test/.* /root/test1

también copia, ..lo que copia todos los archivos y carpetas en el directorio principal de la fuente.

¿Cómo evitar copiar .y ..?

Respuesta1

No se indica explícitamente en la pregunta si desea copiarsolonombres ocultos, o si desea copiar todos los archivos. Del mismo modo, si desea copiar el contenido de algún subdirectorio. Voy a suponer que quieres copiarsoloEl nombre oculto es el directorio actual (porque parece que quieres hacerlo con tu comando).

Su comando no copiaría todos los archivos en el directorio principal a menos que también usara la -Ropción con cp(o -rcon GNU cp) para hacer una copia recursiva. Sin la -Ropción, cpse quejaría de .que ..son directorios, pero no los copiaría.

En el bashshell, establezca la GLOBIGNOREvariable del shell en la :lista delimitada de nombres a los que no desea que el shell expanda los patrones globales de nombres de archivos,

GLOBIGNORE='.:..'

luego copia tus archivos,

cp /root/test/.* /root/test1

Para configurar GLOBIGNOREtemporalmente, solo para la operación de copia, use un subshell:

( GLOBIGNORE='.:..'; cp /root/test/.* /root/test1 )

Respuesta2

El modismo estándar para incluir todos los nombres que comienzan con un punto excepto .y ..es .??*. Entonces tu comando sería

cp /root/test/.??* /root/test1

información relacionada