zsh
mv Foo/*(DN) Bar/
veya
setopt -s glob_dots
mv Foo/*(N) Bar/
( (N)Dizinin boş olmadığını biliyorsanız, bırakın .)
darbe
shopt -s dotglob nullglob
mv Foo/* Bar/
ksh93
Dizinin boş olmadığını biliyorsanız:
FIGNORE='.?(.)'
mv Foo/* Bar/
Standart (POSIX) sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
mvKomutun başarılı olmasına rağmen hata durumu döndürmesine izin vermeye istekliysen , çok daha basittir:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU bulmak ve GNU mv
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
Standart bulmak
Kaynak dizine geçmeyi sakıncası yoksa:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
Nokta dosyalarının bash, ksh93 ve zsh ile eşleşip eşleşmediğini kontrol etme hakkında daha fazla ayrıntı.
darbe
dotglobSeçeneği ayarlayın .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
Ayrıca, yoksayılacak iki nokta üst üste işaretli bir joker karakter şablonuna ayarlayabileceğiniz daha esnek bir GLOBIGNOREdeğişken de vardır . Ayarlanmamışsa (varsayılan ayar), kabuk dotglobayarlanmışsa değer .*boşmuş gibi ve seçenek ayarlanmamışsa değermiş gibi davranır . Kılavuzdaki Dosya Adı Genişletme bölümüne bakın . Yaygın dizinler .ve desen tarafından açıkça eşleştirilmediği ..sürece her zaman çıkarılır ..
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
ksh93
FIGNOREDeğişkeni ayarlayın . Eğer ayarlanmamışsa (varsayılan ayar), kabuk sanki değermiş gibi davranır .*. Göz ardı etmek .ve ..bunlar açıkça (Ksh 93s + 2008-01-31 devletler içinde kılavuzu eşleşmesi gerekir .ve ..hep göz ardı edilir, ancak bu doğru gerçek davranışını tarif etmez).
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
Nokta dosyalarını açık bir şekilde eşleştirerek bir kalıba dahil edebilirsiniz .
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
Dizin boşsa, genişletmenin boş görünmesi için, Ndesen eşleme seçeneğini kullanın: ~(N)@(*|.[^.]*|..?*)veya ~(N:*|.[^.]*|..?*).
zsh
dot_globSeçeneği ayarlayın .
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
.ve ..desen .açıkça öncüyle eşleşse bile asla eşleşmez .
% echo .*
..two .one
Nokta dosyalarını D glob niteleyicisiyle belirli bir düzende dahil edebilirsiniz .
% echo *(D)
..two .one none zero
Ekle Nboş bir dizinde boş çıkıp genişleme yapmak için glob eleme: *(DN).
Not: Eğer farklı sıralarda dosya genişleme sonuçlarını (örneğin alabilirsiniz noneizledi .oneizledi ..twosizin ayarlarınıza göre) LC_COLLATE, LC_ALLve LANGdeğişkenler.