Di bawah ksh, bash, atau zsh:
svn mv !(2010) 2010
Di bawah bash, Anda harus menjalankannya shopt -s extglobdulu (letakkan di Anda ~/.bashrc). Di bawah zsh, Anda harus menjalankannya setopt -o ksh_globdulu (letakkan di Anda ~/.zshrc).
Ini tidak memindahkan file dot (file yang namanya dimulai dengan .). Jika Anda memiliki beberapa, pindahkan secara terpisah. Berhati-hatilah untuk mengecualikan .svndirektori jika Anda memilikinya. Dalam ksh atau zsh:
svn mv !(2010) .!(svn) 2010
Dalam bash, ini lebih rumit karena Anda juga perlu mengecualikan .dan ...
svn mv !(2010) .!(svn|.|) 2010
Zsh juga memiliki sintaks yang berbeda dan lebih pendek, yang mengharuskan berjalan setopt -o extended_globterlebih dahulu (sekali lagi, masukkan ini ~/.zshrc):
svn mv {^,}2010
Ekspansi brace pertama ikut berperan, menghasilkan svn mv ^2010 2010. Kemudian pola ^2010(jalan pintas untuk "file yang cocok *tetapi tidak 2010") diperluas.
Jika Anda memiliki .svndirektori, Anda harus mengeluarkannya dari pemindahan. Ini ok secara default, karena .svntidak cocok dengan *(ini file dot). Namun, ada beberapa komplikasi:
Jika Anda telah mengatur glob_dotsopsi, Anda harus mengecualikan .svnjuga:
svn mv !(2010|.svn) 2010 # requires setopt ksh_glob
svn mv *~(.svn|2010) 2010 # requires setopt extended_glob
Jika Anda memiliki file dot dan belum Anda atur glob_dots, Anda harus memindahkannya secara terpisah:
svn mv {^,}2010
svn mv .*~.svn 2010
Untuk melakukannya dalam sekali jalan:
svn mv *~(.svn|2010)(D) 2010
Cara lain yang akan bekerja di zsh dalam kasus ini (jika Anda tidak memiliki subdirektori) adalah svn mv *(.D) 2010, untuk mencocokkan hanya file biasa ( .) termasuk file dot ( D).
mvjuga. Namun, denganmv,mv * newdirbekerja untuk saya, meskipun dengan kesalahan.