Bash

如何在 bash/zsh 中重用 .gitignore 中的文件模式?

  • November 7, 2015

這裡是內容.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 可以理解這些文件模式?

您可以使用grep’s -faka ( --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

引用自:https://unix.stackexchange.com/questions/241408