La commande exécutée était "mv space *" dans un dossier contenant 14 Go de données.
mv *
du -hs
est le même, alors où sont passés les 14 Go de données ? Qu'ai-je fait ?
La commande exécutée était "mv space *" dans un dossier contenant 14 Go de données.
mv *
du -hs
est le même, alors où sont passés les 14 Go de données ? Qu'ai-je fait ?
Je pense que bash étend le caractère générique et déplace ainsi tous les dossiers dans le dernier.
Par exemple :
$ ls
test1 test2 test3 test4
$ mv *
$ ls
test4
$ ls test4
test1 test2 test3
Ici, mv *
est étendu à mv test1 test2 test3 test4
correspondant à mv [OPTION]... SOURCE... DIRECTORY
format. Ainsi, chaque dossier est déplacé dans le dernier.
Comme décrit par @ssssteffff, avec mv *
Le Shell effectue une expansion de caractères génériques à partir des fichiers du répertoire actuel. Cependant, le comportement de mv
dépend du nombre d'arguments *
s'étend à. S'il y a plus de deux arguments, le dernier argument doit être un répertoire :
mv [OPTION]... SOURCE... DIRECTORY
Ainsi,
J'ai créé 5 fichiers
$ touch 1 2 3 4 5
$ ls
1 2 3 4 5
$ mv *
mv: target ‘5’ is not a directory
$ ls
1 2 3 4 5
Maintenant, si je crée un répertoire qui vient comme dernier paramètre de l'expansion de la carte sauvage, alors.. :
$ mkdir 6
$ mv *
$ ls
6
$ ls 6
1 2 3 4 5
Vous devriez revérifier ce qu'était ce dernier argument.
Êtes-vous sûr de ne pas avoir vu une erreur semblable à celle-ci ?
mv: target ‘5’ is not a directory`
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.