Di bawah ksh, bash, atau zsh:
svn mv !(2010) 2010
Di bawah bash, Anda harus menjalankannya shopt -s extglob
dulu (letakkan di Anda ~/.bashrc
). Di bawah zsh, Anda harus menjalankannya setopt -o ksh_glob
dulu (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 .svn
direktori 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_glob
terlebih 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 .svn
direktori, Anda harus mengeluarkannya dari pemindahan. Ini ok secara default, karena .svn
tidak cocok dengan *
(ini file dot). Namun, ada beberapa komplikasi:
Jika Anda telah mengatur glob_dots
opsi, Anda harus mengecualikan .svn
juga:
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
).
mv
juga. Namun, denganmv
,mv * newdir
bekerja untuk saya, meskipun dengan kesalahan.