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

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

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

Atualmente estou iterando 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

Quero filtrar ainda mais essa $filevariável se ela corresponder ao padrão no arquivo .gitignore. Existe algum utilitário existente ou bash integrado que possa entender esses padrões de arquivo?

Responder1

Você pode usar grepa opção -faka ( --file), com substituição de processo para "regexificar" alguns dos padrões. Por exemplo:

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

informação relacionada