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 mv
comando 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 dotglob
opción .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
También está la GLOBIGNORE
variable 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 dotglob
está 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 FIGNORE
variable . 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 N
opción de coincidencia de patrones: ~(N)@(*|.[^.]*|..?*)
o ~(N:*|.[^.]*|..?*)
.
Zsh
Establece la dot_glob
opció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 N
calificativo 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, none
seguido por .one
seguido por ..two
) en base a la configuración de los LC_COLLATE
, LC_ALL
y LANG
las variables.