Sous ksh, bash ou zsh:
svn mv !(2010) 2010
Sous bash, vous devez d' shopt -s extglob
abord exécuter (mettez-le dans votre ~/.bashrc
). Sous zsh, vous devez d' setopt -o ksh_glob
abord exécuter (mettez-le dans votre ~/.zshrc
).
Cela ne déplace pas les fichiers de points (fichiers dont le nom commence par .
). Si vous en avez, déplacez-les séparément. Veillez à exclure le .svn
répertoire si vous en avez un. En ksh ou zsh:
svn mv !(2010) .!(svn) 2010
En bash, c'est plus compliqué car vous devez également exclure explicitement .
et ..
.
svn mv !(2010) .!(svn|.|) 2010
Zsh a également une syntaxe différente et plus courte, qui nécessite d'être exécutée en setopt -o extended_glob
premier (encore une fois, mettez-la ~/.zshrc
):
svn mv {^,}2010
La première extension de l'entretoise entre en jeu, résultant en svn mv ^2010 2010
. Ensuite, le modèle ^2010
(un raccourci pour «les fichiers correspondent *
mais pas 2010
») est développé.
Si vous avez un .svn
répertoire, vous devrez l'exclure du déplacement. C'est ok par défaut, car il .svn
ne correspond pas à *
(c'est un fichier de points). Cependant, il y a des complications:
Si vous avez défini l' glob_dots
option, vous devrez également exclure .svn
:
svn mv !(2010|.svn) 2010 # requires setopt ksh_glob
svn mv *~(.svn|2010) 2010 # requires setopt extended_glob
Si vous avez des fichiers de points et que vous ne les avez pas définis glob_dots
, vous devrez les déplacer séparément:
svn mv {^,}2010
svn mv .*~.svn 2010
Pour le faire en une seule fois:
svn mv *~(.svn|2010)(D) 2010
Une autre façon qui fonctionnerait dans zsh dans ce cas (si vous n'avez pas de sous-répertoires) est de svn mv *(.D) 2010
faire correspondre uniquement les fichiers réguliers ( .
), y compris les fichiers de points ( D
).
mv
. Cependant, avecmv
,mv * newdir
fonctionne pour moi, mais avec une erreur.