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 -R
opción con cp
(o -r
con GNU cp
) para hacer una copia recursiva. Sin la -R
opción, cp
se quejaría de .
que ..
son directorios, pero no los copiaría.
En el bash
shell, establezca la GLOBIGNORE
variable 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 GLOBIGNORE
temporalmente, 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