Под ksh, bash или zsh:
svn mv !(2010) 2010
Под Bash, вам нужно запустить в shopt -s extglobпервую очередь (положить его в свой ~/.bashrc). Под zsh вам нужно setopt -o ksh_globсначала запустить (поместите в свой ~/.zshrc).
Это не перемещает точечные файлы (файлы, чье имя начинается с .). Если у вас есть, переместите их отдельно. Будьте осторожны, чтобы исключить .svnкаталог, если он у вас есть. В кш или зш:
svn mv !(2010) .!(svn) 2010
В bash это сложнее, потому что вам также нужно явно исключить .и ...
svn mv !(2010) .!(svn|.|) 2010
У Zsh также есть другой, более короткий синтаксис, который требует запуска setopt -o extended_globпервым (опять же, вставьте это в ~/.zshrc):
svn mv {^,}2010
Первое расширение скобки вступает в игру, в результате чего svn mv ^2010 2010. Затем шаблон ^2010(ярлык «файлы совпадают, *но не 2010») расширяется.
Если у вас есть .svnкаталог, вам нужно исключить его из переезда. Это нормально по умолчанию, поскольку .svnне соответствует *(это точечный файл). Однако есть осложнения:
Если вы установили glob_dotsопцию, вам также необходимо исключить .svn:
svn mv !(2010|.svn) 2010 # requires setopt ksh_glob
svn mv *~(.svn|2010) 2010 # requires setopt extended_glob
Если у вас есть точечные файлы, но вы не установили их glob_dots, вам нужно переместить их отдельно:
svn mv {^,}2010
svn mv .*~.svn 2010
Чтобы сделать это за один раз:
svn mv *~(.svn|2010)(D) 2010
Другой способ, который будет работать в zsh в этом случае (если у вас нет подкаталогов), - svn mv *(.D) 2010это сопоставление только обычных файлов ( .), включая точечные файлы ( D).
mv. Тем не менее, сmv,mv * newdirу меня работает, правда , с ошибкой.