¿Cuál es la diferencia entre los siguientes 2 comandos?
cp -rp /dir1/*.* /dir2/
cp -rp /dir1/* /dir2/
shell
shell-script
command-line
cp
stany
fuente
fuente
.
like.bashrc
) no se copian con ninguno de esos comandos. Para copiar esos archivos, debe indicar explícitamente que con.*
eso, para copiar todos los archivos (incluidos los ocultos), el comando seríacp -rp /dir1/.* /dir1/* /dir2/
*.*
es la forma MS-DOS / Windows de hacerlo, mientras que*
es la forma UNIX / Linux. En el sufijo Unix (finalización de archivo, la parte después de.
- like.txt
or.jpg
) es opcional ... En MS-DOS.
se requería el (punto) y el sufijo, por lo que para que coincida con todos los archivos, se usa uno*.*
, mientras que para que coincida con todos los archivos de texto , uno lo usaría*.txt
.FILENAME
o inclusoFILE
.*.*
en DOS todavía coincide con los archivos nombradosFILENAME
oFILE
, porque el nombre es 'realmente'FILENAME.
oFILE.
(con una extensión vacía). En Unix, el nombre es "realmente"FILENAME
oFILE
, por*.*
lo que no coincidirá.*
solo coincidiríaFILE
, y noFILE.TXT
.Respuestas:
*.*
solo coincide con los nombres de archivo con un punto en el medio o al final. Por ejemplo:*
coincide con los nombres de archivo anteriores, más los nombres que no tienen un punto en absoluto. por ejemplo:fuente
*.*
solía ser la forma correcta de hacer coincidir todos los archivos en MS-DOS en el día de 8 + 3 nombres de archivo. En MS-DOS, el punto es obligatorio (aunque implícito en los archivos que no tienen una extensión).*.*
coincidefoo.
pero no.foo
. Esa asimetría es terrible..
(directorio actual) y..
(directorio principal) que siempre existen en cualquier directorio (incluso directorios vacíos). Ritchie y Thompson más tarde lo consideraron una característica útil para ocultar (por defecto) todos los.*rc
archivos de configuración y agregaron una-a
opción explícitals
para mostrar todas estas entradas "ocultas" (punto inicial). Así que esto no es muy sorprendente conocer la historia de Unix. Un punto líder en Unix ha sido especial desde "para siempre".Supongamos que tiene los siguientes archivos en
/dir1
:Este comando copiará solo los siguientes archivos:
Esto copiará todos los archivos en
/dir1
La condición también se aplica a los subdirectorios en
/dir1
.fuente