zsh
mv Foo/*(DN) Bar/
o
setopt -s glob_dots
mv Foo/*(N) Bar/
(Lasciare fuori (N)se si sa che la directory non è vuota.)
bash
shopt -s dotglob nullglob
mv Foo/* Bar/
ksh93
Se sai che la directory non è vuota:
FIGNORE='.?(.)'
mv Foo/* Bar/
Standard (POSIX) sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
Se sei disposto a lasciare che il mvcomando restituisca uno stato di errore anche se è riuscito, è molto più semplice:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU find e GNU mv
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
Trova standard
Se non ti dispiace cambiare nella directory di origine:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
Ecco ulteriori dettagli sul controllo della corrispondenza dei file dot in bash, ksh93 e zsh.
bash
Imposta l' dotglobopzione .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
C'è anche la GLOBIGNOREvariabile più flessibile , che è possibile impostare su un elenco separato da due punti di motivi jolly da ignorare. Se non impostato (impostazione predefinita), la shell si comporta come se il valore fosse vuoto se dotglobimpostato, e come se il valore fosse .*se l'opzione non è impostata. Vedere Espansione nome file nel manuale. Le directory pervasive .e ..sono sempre omesse, a meno che non .sia abbinato esplicitamente al modello.
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
ksh93
Imposta la FIGNOREvariabile . Se non impostato (impostazione predefinita), la shell si comporta come se il valore fosse .*. Per ignorarli .e .., devono essere abbinati esplicitamente (il manuale in ksh 93s + 2008-01-31 afferma che .e ..sono sempre ignorati, ma questo non descrive correttamente il comportamento reale).
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
È possibile includere file di punti in un modello abbinandoli esplicitamente.
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
Per fare in modo che l'espansione risulti vuota se la directory è vuota, utilizzare l' Nopzione di corrispondenza del modello: ~(N)@(*|.[^.]*|..?*)o ~(N:*|.[^.]*|..?*).
zsh
Imposta l' dot_globopzione .
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
.e ..non vengono mai abbinati, anche se lo schema corrisponde .esplicitamente al comando iniziale.
% echo .*
..two .one
È possibile includere file dot in uno schema specifico con il D qualificatore glob .
% echo *(D)
..two .one none zero
Aggiungere il Nqualificatore glob per rendere l'espansione uscirà vuota in una directory vuota: *(DN).
Nota: è possibile ottenere risultati espansione dei nomi in ordine diverso (ad esempio, noneseguita da .oneseguita da ..two) in base alle impostazioni dei LC_COLLATE, LC_ALLe LANGle variabili.