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