Você só precisa criar uma lista de arquivos correspondentes do glob, separados por espaço:
for file in .* *; do echo "$file"; done
Editar
O acima pode reescrever de forma diferente usando a expansão de chave
for file in {.*,*}; do echo "$file"; done
ou ainda mais curto: for file in {.,}*; do echo "$file"; done
Adicionando o caminho para os arquivos selecionados:
for file in /path/{..?,.[!.],}*; do echo "$file"; done
Adicionando o caminho para os arquivos selecionados:
for file in /path/{.,}*; do echo "$file"; done
Se você deseja ser sofisticado e remover da lista, geralmente desnecessário . e .. apenas alteram {.,}* para {..?,.[!.],}* .
Para completar, é importante mencionar que também é possível definir o dotglob para corresponder aos arquivos de pontos com * puro.
shopt -s dotglob
Em zsh , é necessário definir adicionalmente nullglob para evitar o erro em caso de ausência de correspondência:
setopt nullglob
ou, como alternativa, adicione o qualificador de glob N ao padrão:
for file in /path/{.,}*(N); do echo "$file"; done