¿Cómo reutilizar el patrón de archivo en .gitignore en bash/zsh?

¿Cómo reutilizar el patrón de archivo en .gitignore en bash/zsh?

Aquí está el contenido del.gitignore

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

Actualmente estoy iterando archivos en una carpeta local mediante este script:

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

Quiero filtrar aún más esta $filevariable si coincide con el patrón en el archivo .gitignore. ¿Existe alguna utilidad o bash integrado que pueda comprender estos patrones de archivos?

Respuesta1

Es posible que pueda utilizar grepla opción -ftambién conocida como ( --file), con sustitución de procesos para "regexificar" algunos de los patrones. Por ejemplo:

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

información relacionada