bash/zsh에서 .gitignore의 파일 패턴을 재사용하는 방법은 무엇입니까?

bash/zsh에서 .gitignore의 파일 패턴을 재사용하는 방법은 무엇입니까?

내용은 이렇습니다.gitignore

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

현재 다음 스크립트를 통해 로컬 폴더의 파일을 반복하고 있습니다.

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

$file이 변수가 일치하는 경우 추가로 필터링하고 싶습니다 .gitignore. 이러한 파일 패턴을 이해할 수 있는 기존 유틸리티나 bash가 내장되어 있습니까?

답변1

grep-f일명 ( ) 옵션을 사용하여 --file절차적 대체를 통해 특정 패턴을 "정규화" 할 수 있습니다 . 예를 들어:

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

관련 정보