Bajo ksh, bash o zsh:
svn mv !(2010) 2010
En bash, debes ejecutar shopt -s extglob
primero (ponlo en tu ~/.bashrc
). En zsh, debe ejecutar setopt -o ksh_glob
primero (ponerlo en su ~/.zshrc
).
Esto no mueve archivos de puntos (archivos cuyo nombre comienza con .
). Si tiene algunos, muévalos por separado. Tenga cuidado de excluir el .svn
directorio si tiene uno. En ksh o zsh:
svn mv !(2010) .!(svn) 2010
En bash, esto es más complicado porque también debes excluir explícitamente .
y ..
.
svn mv !(2010) .!(svn|.|) 2010
Zsh también tiene una sintaxis diferente y más corta, que requiere ejecutarse setopt -o extended_glob
primero (nuevamente, ponga esto ~/.zshrc
)
svn mv {^,}2010
La primera expansión de llaves entra en juego, lo que resulta en svn mv ^2010 2010
. Luego se expande el patrón ^2010
(un acceso directo para "archivos que coinciden *
pero no 2010
").
Si tiene un .svn
directorio, deberá excluirlo del movimiento. Esto está bien por defecto, ya .svn
que no coincide *
(es un archivo de puntos). Sin embargo, hay complicaciones:
Si ha configurado la glob_dots
opción, deberá excluir .svn
también:
svn mv !(2010|.svn) 2010 # requires setopt ksh_glob
svn mv *~(.svn|2010) 2010 # requires setopt extended_glob
Si tiene archivos de puntos y no los ha configurado glob_dots
, deberá moverlos por separado:
svn mv {^,}2010
svn mv .*~.svn 2010
Para hacerlo de una vez:
svn mv *~(.svn|2010)(D) 2010
Otra forma que funcionaría en zsh en este caso (si no tiene subdirectorios) es svn mv *(.D) 2010
hacer coincidir solo los archivos normales ( .
), incluidos los archivos de puntos ( D
).
mv
. Sin embargo, conmv
,mv * newdir
funciona para mí, aunque con un error.