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
mv
Komutun 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
dotglob
Seç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 GLOBIGNORE
değişken de vardır . Ayarlanmamışsa (varsayılan ayar), kabuk dotglob
ayarlanmış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
FIGNORE
Değ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, N
desen eşleme seçeneğini kullanın: ~(N)@(*|.[^.]*|..?*)
veya ~(N:*|.[^.]*|..?*)
.
zsh
dot_glob
Seç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 N
boş 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 none
izledi .one
izledi ..two
sizin ayarlarınıza göre) LC_COLLATE
, LC_ALL
ve LANG
değişkenler.