Zsh
mv Foo/*(DN) Bar/
atau
setopt -s glob_dots
mv Foo/*(N) Bar/
(Biarkan (N)jika Anda tahu direktori tidak kosong.)
Pesta
shopt -s dotglob nullglob
mv Foo/* Bar/
Ksh93
Jika Anda tahu direktori tersebut tidak kosong:
FIGNORE='.?(.)'
mv Foo/* Bar/
Standar (POSIX) sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
Jika Anda ingin membiarkan mvperintah mengembalikan status kesalahan meskipun berhasil, itu jauh lebih sederhana:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU find dan GNU mv
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
Temuan standar
Jika Anda tidak keberatan mengubah ke direktori sumber:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
Berikut ini lebih detail tentang cara mengendalikan apakah file dot dicocokkan dengan bash, ksh93 dan zsh.
Pesta
Setel dotglobopsi .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
Ada juga GLOBIGNOREvariabel yang lebih fleksibel , yang dapat Anda atur ke daftar pola wildcard yang dipisahkan oleh usus besar untuk diabaikan. Jika tidak disetel (pengaturan default), shell berperilaku seolah-olah nilainya kosong jika dotglobdiatur, dan seolah-olah nilainya adalah .*jika opsi tidak disetel. Lihat Ekspansi Nama File di manual. Direktori meresap .dan ..selalu dihilangkan, kecuali jika .dicocokkan secara eksplisit oleh pola.
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
Ksh93
Atur FIGNOREvariabelnya . Jika tidak disetel (pengaturan default), shell berperilaku seolah-olah nilainya .*. Untuk mengabaikan .dan .., mereka harus dicocokkan secara eksplisit (manual dalam ksh 93s + 2008-01-31 menyatakan bahwa .dan ..selalu diabaikan, tetapi ini tidak dengan benar menggambarkan perilaku aktual).
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
Anda dapat memasukkan file dot dalam suatu pola dengan mencocokkannya secara eksplisit.
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
Agar ekspansi keluar kosong jika direktori kosong, gunakan Nopsi pencocokan pola: ~(N)@(*|.[^.]*|..?*)atau ~(N:*|.[^.]*|..?*).
Zsh
Setel dot_globopsi .
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
.dan ..tidak pernah cocok, bahkan jika polanya cocok dengan pemimpin .secara eksplisit.
% echo .*
..two .one
Anda dapat menyertakan file dot dalam pola tertentu dengan D kualifikasi glob .
% echo *(D)
..two .one none zero
Tambahkan Nkualifikasi glob untuk membuat ekspansi keluar kosong di direktori kosong: *(DN).
Catatan: Anda mungkin mendapatkan hasil ekspansi nama file dalam urutan yang berbeda (misalnya, nonediikuti oleh .onediikuti oleh ..two) berdasarkan pengaturan Anda dari LC_COLLATE, LC_ALL, dan LANGvariabel.