Zsh
mv Foo/*(DN) Bar/
o
setopt -s glob_dots
mv Foo/*(N) Bar/
(Omita (N)si sabe que el directorio no está vacío).
Golpetazo
shopt -s dotglob nullglob
mv Foo/* Bar/
Ksh93
Si sabe que el directorio no está vacío:
FIGNORE='.?(.)'
mv Foo/* Bar/
Estándar (POSIX) sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
Si está dispuesto a permitir que el mvcomando devuelva un estado de error a pesar de que tuvo éxito, es mucho más simple:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU find y GNU mv
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
Hallazgo estándar
Si no le importa cambiar al directorio de origen:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
Aquí hay más detalles sobre cómo controlar si los archivos de puntos coinciden en bash, ksh93 y zsh.
Golpetazo
Establece la dotglobopción .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
También está la GLOBIGNOREvariable más flexible , que puede establecer en una lista de patrones comodín separados por dos puntos para ignorar. Si no está establecido (la configuración predeterminada), el shell se comporta como si el valor estuviera vacío si dotglobestá establecido, y como si el valor fuera .*si la opción no está establecida. Consulte Expansión del nombre de archivo en el manual. Los directorios omnipresentes .y ..siempre se omiten, a menos que .el patrón coincida explícitamente.
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
Ksh93
Establece la FIGNOREvariable . Si no está establecido (la configuración predeterminada), el shell se comporta como si el valor fuera .*. Para ignorar .y .., deben coincidir explícitamente (el manual en ksh 93s + 2008-01-31 establece eso .y ..siempre se ignora, pero esto no describe correctamente el comportamiento real).
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
Puede incluir archivos de puntos en un patrón uniéndolos explícitamente.
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
Para que la expansión salga vacía si el directorio está vacío, use la Nopción de coincidencia de patrones: ~(N)@(*|.[^.]*|..?*)o ~(N:*|.[^.]*|..?*).
Zsh
Establece la dot_globopción .
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
.y ..nunca coinciden, incluso si el patrón coincide .explícitamente con el inicio.
% echo .*
..two .one
Puede incluir archivos de puntos en un patrón específico con el D calificador global .
% echo *(D)
..two .one none zero
Añadir el Ncalificativo pegote para que la expansión salido vacía en un directorio vacío: *(DN).
Nota: es posible obtener resultados expansión de nombre de archivo en diferentes órdenes (por ejemplo, noneseguido por .oneseguido por ..two) en base a la configuración de los LC_COLLATE, LC_ALLy LANGlas variables.