Copie todos os dotfiles, exceto '.git' e '..'

6

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.

    
por dotancohen 17.09.2013 / 10:50

2 respostas

6

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)
    
por 17.09.2013 / 10:54
1

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

    
por 17.09.2013 / 10:54