Sotto ksh, bash o zsh:
svn mv !(2010) 2010
Sotto bash, devi shopt -s extglobprima correre (mettilo nel tuo ~/.bashrc). Sotto zsh, devi setopt -o ksh_globprima eseguirlo (mettilo nel tuo ~/.zshrc).
Questo non sposta i file di punti (file il cui nome inizia con .). Se ne hai alcuni, spostali separatamente. Fai attenzione a escludere la .svndirectory se ne hai una. In ksh o zsh:
svn mv !(2010) .!(svn) 2010
In bash, questo è più complicato perché è necessario anche escludere esplicitamente .e ...
svn mv !(2010) .!(svn|.|) 2010
Zsh ha anche una sintassi diversa, più breve, che richiede l'esecuzione setopt -o extended_globprima (di nuovo, inseriscilo ~/.zshrc):
svn mv {^,}2010
Entra in gioco l'espansione della prima parentesi, risultante svn mv ^2010 2010. Quindi il modello ^2010(un collegamento per "corrispondenza dei file *ma non 2010") viene espanso.
Se hai una .svndirectory, dovrai escluderla dalla mossa. Questo è ok per impostazione predefinita, in quanto .svnnon corrisponde *(è un file punto). Tuttavia, ci sono complicazioni:
Se hai impostato l' glob_dotsopzione, dovrai anche escludere .svn:
svn mv !(2010|.svn) 2010 # requires setopt ksh_glob
svn mv *~(.svn|2010) 2010 # requires setopt extended_glob
Se hai file dot e non li hai impostati glob_dots, dovrai spostarli separatamente:
svn mv {^,}2010
svn mv .*~.svn 2010
Per farlo in una volta sola:
svn mv *~(.svn|2010)(D) 2010
Un altro modo che funzionerebbe in zsh in questo caso (se non hai sottodirectory) è svn mv *(.D) 2010quello di abbinare solo i file regolari ( .) inclusi i file punto ( D).
mv. Tuttavia, conmv,mv * newdirfunziona per me, anche se con un errore.