Wie kann ich das Dateimuster in .gitignore in Bash/Zsh wiederverwenden?

Wie kann ich das Dateimuster in .gitignore in Bash/Zsh wiederverwenden?

Hier ist der Inhalt der.gitignore

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

Ich iteriere derzeit Dateien in einem lokalen Ordner mit diesem Skript:

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

Ich möchte diese $fileVariable weiter filtern, wenn sie mit dem Muster in übereinstimmt .gitignore. Gibt es vorhandene Dienstprogramme oder integrierte Bash-Funktionen, die diese Dateimuster verstehen können?

Antwort1

Möglicherweise können Sie grepdie Option -faka ( --file) mit Prozesssubstitution verwenden, um einige der Muster „regexifizieren“. Beispiel:

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

verwandte Informationen