C'est une question un peu embarrassante, mais je dois admettre qu'à la fin de ma carrière, j'ai encore des questions sur la commande mv.
J'ai souvent ce problème: je dois déplacer tous les fichiers de façon récursive d'un niveau. Disons que j'ai un dossier foo et une barre de dossiers à l'intérieur. La barre a un désordre de fichiers et de dossiers, y compris des fichiers et des dossiers de points. Comment puis-je déplacer tout dans la barre au niveau foo?
Si foo est vide, je déplace simplement la barre d'un niveau au-dessus, supprime foo et renomme la barre en foo. Une partie du problème est que je ne peux pas comprendre ce qu'est le caractère générique de mv pour «tout, y compris les points». Une partie de cette question est la suivante: existe-t-il une discussion approfondie des caractères génériques que les commandes cp et mv utilisent quelque part (la recherche sur Google n'apporte que des didacticiels très basiques).
la source
To eliminate the error caused by also matching "." and "..", use this command: mv bar/{,.[!.],..?}* .
La façon la plus simple de le faire est de le faire en deux commandes, car * ne correspond pas à.
Vous ne voulez pas utiliser la barre /.* que j'ai découverte en commettant cette erreur:
C'est une mauvaise chose. Quelqu'un veut-il deviner pourquoi? ;-)
la source
.*
en.
et..
. Zsh ne me convient pas du moins.Première chose à savoir sur la globalisation - c'est fait par le shell, pas par la commande. Consultez la page de manuel de votre shell pour tous les détails.
la source
Celui-ci récolte tous les fichiers des sous-dossiers et les déplace vers le répertoire courant
Si vous souhaitez réécrire des fichiers avec le même nom, utilisez
la source
mv .??* *
prendra soin de tout sauf du point suivi d'un seul caractère. Si cela est courant pour votre situation, vous pouvez ajouter.[a-zA-Z0-9]*
. Cela laissera toujours des fichiers avec des noms tels que.;
,.^
et.^I
(onglet). Si vous avez besoin de tout gérer, vous devrez être un peu plus complexe.la source
Si vous avez une structure de répertoires
/foo/bar/
et que vous souhaitez déplacer tous les fichiers sousbar
une étape ci-dessus, allez dans lebar
répertoire et tapez ce qui suit:En général, je pense que
cpio(1)
c'est mieux pour ce genre de tâches. Vous pouvez consulter la documentation détaillée en la publiantinfo cpio
dans votre shell.la source