Plus d'informations sont nécessaires. Quelle plateforme?
Jarmund
4
@Jarmund Je pense qu'il est prudent de supposer un certain * nix, étant donné que les deux commandes mentionnées sont des commandes communes sur les systèmes de type Unix. À cet égard, je pense qu'il est prudent de dire que la plupart des obus fonctionnent de la même manière. Nous pouvons donc en déduire suffisamment pour donner une réponse utile même si la plate-forme exacte n'est pas explicitement indiquée.
Un autre écueil à mentionner. Vous ne devez JAMAIS exécuter mvou cpavec " " sur des données non fiables. En effet, " " est développé et les fichiers avec des noms comme "--verbose" obtiennent des arguments de ligne de commande. Quoi utiliser à la place:cp ./* anotherFolder
VasyaNovikov
Réponses:
30
Je suppose que bash étend le caractère générique et déplace ainsi chaque dossier dans le dernier.
Par exemple:
$ ls
test1 test2 test3 test4
$ mv *
$ ls
test4
$ ls test4
test1 test2 test3
Ici, mv *est développé pour mv test1 test2 test3 test4correspondre au mv [OPTION]... SOURCE... DIRECTORYformat. Ainsi, chaque dossier est déplacé dans le dernier.
Cette. Par ailleurs, si vous souhaitez utiliser *dans un mv(ou cp), jetez un œil à leur --target-directorycommutateur. Cela garantit que vous ne serez pas mordu par des choses comme ça.
un CVn le
2
Comme décrit par @ssssteffff, avec mv *, le shell effectue une expansion générique à partir des fichiers du répertoire courant. Cependant, le comportement de la mvcommande dépend du nombre d'arguments *développés. S'il y a plus de deux arguments, le dernier argument doit être un répertoire:
mv [OPTION]... SOURCE... DIRECTORY
Donc,
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 en dernier paramètre pour l'expansion des caractères génériques, alors:
$ mkdir 6
$ mv *
$ ls
6
$ ls 6
1 2 3 4 5
Vous devriez vérifier ce qu'était ce dernier argument.
Si le dernier argument était un répertoire, vos données sont peut-être en sécurité.
Si le nombre total d'arguments était de 2 et que le dernier argument était un répertoire, vos données sont peut-être également en sécurité.
Si le nombre total d'arguments était de 2 et que le dernier argument était un fichier, le deuxième fichier est définitivement parti.
Êtes-vous sûr que vous n'avez pas vu l'erreur quelque chose comme ça?
mv
oucp
avec " " sur des données non fiables. En effet, " " est développé et les fichiers avec des noms comme "--verbose" obtiennent des arguments de ligne de commande. Quoi utiliser à la place:cp ./* anotherFolder
Réponses:
Je suppose que bash étend le caractère générique et déplace ainsi chaque dossier dans le dernier.
Par exemple:
Ici,
mv *
est développé pourmv test1 test2 test3 test4
correspondre aumv [OPTION]... SOURCE... DIRECTORY
format. Ainsi, chaque dossier est déplacé dans le dernier.la source
*
dans unmv
(oucp
), jetez un œil à leur--target-directory
commutateur. Cela garantit que vous ne serez pas mordu par des choses comme ça.Comme décrit par @ssssteffff, avec
mv *
, le shell effectue une expansion générique à partir des fichiers du répertoire courant. Cependant, le comportement de lamv
commande dépend du nombre d'arguments*
développés. S'il y a plus de deux arguments, le dernier argument doit être un répertoire:Donc,
J'ai créé 5 fichiers
Maintenant, si je crée un répertoire qui vient en dernier paramètre pour l'expansion des caractères génériques, alors:
Vous devriez vérifier ce qu'était ce dernier argument.
Êtes-vous sûr que vous n'avez pas vu l'erreur quelque chose comme ça?
la source