Você pode usar o globbing estendido no bash:
shopt -s extglob
ls .!(.|git)
Isso também corresponde a .
, então você provavelmente precisará
ls .!(|.|git)
Estou ciente de usar .[!.]*
para se referir a todos os dotfiles em um diretório com exceção de ..
, mas como se pode referir a todos os dotfiles, exceto ..
e .git
? Eu tentei várias variações em .[!.||.git]*
e .[!.][!.git]*
e similares, mas nenhuma se refere aos arquivos pretendidos.
Você pode usar o find:
find . -type f '!' -iname ".git" -exec cp -rv {} /dest/path \;
Ele pesquisará todos os arquivos no diretório atual, mas não incluirá .git
, pois usamos ! -iname
( onde !
significa não igual a ) e copiaremos o arquivo para o local de destino
Atualizar
find . -not -path '.' -not -path './.git' -iname '.*'
também podemos usar -iregex
em encontrar
find . -not -iregex '.\|./.git' -iname '.*'
ambos os exemplos se referem a todos os dotfiles, exceto por ..
e .git
no caminho atual