Quelle est la différence entre les 2 commandes suivantes?
cp -rp /dir1/*.* /dir2/
cp -rp /dir1/* /dir2/
shell
shell-script
command-line
cp
stany
la source
la source
.
like.bashrc
) ne sont copiés avec aucune de ces commandes. Pour copier ces fichiers, vous devez explicitement indiquer qu'avec.*
cela, pour copier tous les fichiers (y compris ceux cachés), la commande seraitcp -rp /dir1/.* /dir1/* /dir2/
*.*
c'est la façon de faire MS-DOS / Windows, tandis que*
c'est la manière UNIX / Linux. En suffixe Unix (fin de fichier, la partie après le.
- comme.txt
ou.jpg
) est facultative ... En MS-DOS, le.
(point) et le suffixe étaient requis, donc pour faire correspondre tous les fichiers, un utilisé*.*
- tandis que pour faire correspondre tous les fichiers texte , on utiliserait*.txt
.FILENAME
ou mêmeFILE
.*.*
sous DOS correspond toujours aux fichiers nommésFILENAME
ouFILE
, car le nom est «vraiment»FILENAME.
ouFILE.
(avec une extension vide). Sous Unix, le nom est «vraiment»FILENAME
ou ne correspondraFILE
donc*.*
pas.*
ne ferait que correspondreFILE
, et nonFILE.TXT
.Réponses:
*.*
correspond uniquement aux noms de fichiers avec un point au milieu ou à la fin. Par exemple:*
correspond aux noms de fichiers ci-dessus, plus les noms qui n'ont pas de point du tout. par exemple:la source
*.*
était la bonne façon de faire correspondre tous les fichiers sur MS-DOS au jour des noms de fichiers 8 + 3. Dans MS-DOS, le point est obligatoire (bien qu'implicite sur les fichiers qui n'ont pas d'extension).*.*
correspondfoo.
mais pas.foo
. Cette asymétrie est terrible..
(répertoire actuel) et..
(répertoire parent) qui existent toujours dans n'importe quel répertoire (même les répertoires vides). Ritchie et Thompson ont ensuite considéré qu'il s'agissait d'une fonctionnalité utile pour masquer (par défaut) tous les.*rc
fichiers de configuration et ont ajouté une-a
option explicitels
pour afficher toutes ces entrées «cachées» (point principal). Ce n'est donc pas très surprenant de connaître l'histoire d'Unix. Un point important dans Unix est spécial depuis "toujours".Supposons que vous ayez les fichiers suivants dans
/dir1
:Cette commande copiera uniquement les fichiers suivants:
Cela copiera tous les fichiers dans
/dir1
La condition s'applique également aux sous-répertoires de
/dir1
.la source