
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 $file
variá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 grep
a opção -f
aka ( --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