(3 réponses)
Fermé il y a 8 ans.
Chaque fois que je veux déplacer des milliers de fichiers vers un nouveau dossier, je rencontre toujours le même problème.
> mkdir my_folder
> mv * my_folder
mv: cannot move 'my_folder to a subdirectory of itself 'my_folder'
Bien que je pense que l'erreur ci-dessus est inoffensive (n'est-ce pas ? ) Je me demande s'il existe un moyen de l'éviter.
Au cas où cela serait important, je suis intéressé par une solution en zsh ou une solution qui fonctionne bien sur différents shells.
Réponse acceptée :
En zsh, avec le extended_glob
option activée, vous pouvez utiliser ~
pour exclure les motifs des globs, vous pouvez donc utiliser :
setopt extended_glob
mv -- *~my_folder my_folder
Ou utilisez l'opérateur de négation (toujours avec extended_glob
):
mv -- ^my_folder my_folder
Utilisez des accolades pour éviter de taper deux fois le nom du répertoire :
mv -- {^,}my_folder
Dans bash (pour les autres chercheurs de réponses qui l'utilisent), vous pouvez utiliser des globs étendus de style Ksh :
# If it's not already enabled
shopt -s extglob
mv -- !(my_folder) my_folder
Vous pouvez également utiliser cette syntaxe dans zsh
si vous activez le ksh_glob
option.