Como reutilizar o padrão de arquivo em .gitignore no bash / zsh?

2

Aqui está o conteúdo do .gitignore

cron.yaml
build
target
webview
*.pyc
*.sublime-workspace
.idea
*.rej
.coverage
app/tools/temp_*.py
app/tools/*/temp_*.py

No momento, estou passando por arquivos em uma pasta local por este script:

find . -type f | grep -v -E "(.idea|.git)" | while read file
do
  # Do something with $file
done

Eu quero filtrar ainda mais essa variável $file se ela corresponder ao padrão em .gitignore . Existe algum utilitário existente ou bash builtin que possa entender esses padrões de arquivo?

    
por Anthony Kong 07.11.2015 / 03:50

1 resposta

2

Você pode usar a opção grep -f ( --file ), com a substituição do processo para "regexify" alguns dos padrões. Por exemplo:

find . -type f | grep -Ev '(\.idea|\.git)' | 
    grep -v -f <(sed 's/\([.|]\)/\/g; s/\?/./g ; s/\*/.*/g' .gitignore) | 
    while IFS= read -r file ; do 
      # Do something with "$file"
    done
    
por 07.11.2015 / 04:17