Unter ksh, bash oder zsh:
svn mv !(2010) 2010
Unter Bash müssen Sie shopt -s extglob
zuerst laufen (legen Sie es in Ihre ~/.bashrc
). Unter zsh müssen Sie setopt -o ksh_glob
zuerst ausführen (in Ihre einfügen ~/.zshrc
).
Dadurch werden keine Punktdateien verschoben (Dateien, deren Name mit beginnt .
). Wenn Sie welche haben, verschieben Sie sie separat. Achten Sie darauf, das .svn
Verzeichnis auszuschließen, falls Sie eines haben. In ksh oder zsh:
svn mv !(2010) .!(svn) 2010
In bash ist dies komplizierter, da Sie auch explizit .
und ausschließen müssen ..
.
svn mv !(2010) .!(svn|.|) 2010
Zsh hat auch eine andere, kürzere Syntax, die setopt -o extended_glob
zuerst ausgeführt werden muss (setzen Sie diese erneut ein ~/.zshrc
):
svn mv {^,}2010
Die erste Klammererweiterung kommt ins Spiel, was dazu führt svn mv ^2010 2010
. Dann wird das Muster ^2010
(eine Verknüpfung für "Dateien übereinstimmen, *
aber nicht 2010
") erweitert.
Wenn Sie ein .svn
Verzeichnis haben, müssen Sie es vom Umzug ausschließen. Dies ist standardmäßig in Ordnung, da .svn
es nicht mit übereinstimmt *
(es ist eine Punktdatei). Es gibt jedoch Komplikationen:
Wenn Sie die glob_dots
Option festgelegt haben, müssen Sie auch Folgendes ausschließen .svn
:
svn mv !(2010|.svn) 2010 # requires setopt ksh_glob
svn mv *~(.svn|2010) 2010 # requires setopt extended_glob
Wenn Sie Punktdateien haben und diese nicht festgelegt haben glob_dots
, müssen Sie sie separat verschieben:
svn mv {^,}2010
svn mv .*~.svn 2010
Um es auf einmal zu tun:
svn mv *~(.svn|2010)(D) 2010
Eine andere Möglichkeit, die in diesem Fall in zsh funktioniert (wenn Sie keine Unterverzeichnisse haben), besteht darin svn mv *(.D) 2010
, nur reguläre Dateien ( .
) einschließlich Punktdateien ( D
) abzugleichen .
mv
. Funktioniert jedoch mitmv
,mv * newdir
wenn auch mit einem Fehler.