Zsh
mv Foo/*(DN) Bar/
ou
setopt -s glob_dots
mv Foo/*(N) Bar/
(Deixe de fora o (N) se você souber que o diretório não está vazio.)
Bash
shopt -s dotglob nullglob
mv Foo/* Bar/
Ksh93
Se você souber que o diretório não está vazio:
FIGNORE='.?(.)'
mv Foo/* Bar/
Padrão (POSIX) sh
for x in Foo/* Foo/.[!.]* Foo/..?*; do
if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done
Se você estiver disposto a permitir que o comando mv retorne um status de erro, mesmo que tenha sido bem-sucedido, é muito mais simples:
mv Foo/* Foo/.[!.]* Foo/..?* Bar/
GNU find e GNU mv
find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +
Pesquisa padrão
Se você não se importa em mudar para o diretório de origem:
cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune
Veja mais detalhes sobre como controlar se os arquivos de ponto são correspondidos no bash, ksh93 e zsh.
Bash
Defina a dotglob opção .
$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero
Há também a GLOBIGNORE variable mais flexível, que você pode definir uma lista separada por dois pontos de padrões de caractere curinga para ignorar. Se não definido (a configuração padrão), o shell se comporta como se o valor estivesse vazio se dotglob estivesse definido e como se o valor fosse .* se a opção não fosse definida. Consulte Expansão do nome de arquivo no manual. Os diretórios difusos . e .. são sempre omitidos, a menos que . seja correspondido explicitamente pelo padrão.
$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one
Ksh93
Defina a FIGNORE variable . Se não definido (a configuração padrão), o shell se comportará como se o valor fosse .* . Para ignorar . e .. , eles devem ser correspondidos explicitamente (o manual em ksh 93s + 2008-01-31 declara que . e .. são sempre ignorados, mas isso não descreve corretamente o comportamento real).
$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero
Você pode incluir arquivos de ponto em um padrão combinando-os explicitamente.
$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero
Para que a expansão saia vazia se o diretório estiver vazio, use a opção de correspondência de padrão N : ~(N)@(*|.[^.]*|..?*) ou ~(N:*|.[^.]*|..?*) .
Zsh
Defina a dot_glob opção .
% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero
. e .. nunca são correspondidos, mesmo que o padrão corresponda explicitamente à . .
% echo .*
..two .one
Você pode incluir arquivos de pontos em um padrão específico com o D qualificador de glob .
% echo *(D)
..two .one none zero
Adicione o qualificador N glob para tornar a expansão vazia em um diretório vazio: *(DN) .
Observação: você pode obter resultados de expansão de nome de arquivo em pedidos diferentes
(por exemplo, none seguido por .one seguido por ..two )
com base nas suas configurações das variáveis LC_COLLATE , LC_ALL e LANG .