![如何在 bash/zsh 中重用 .gitignore 中的文件模式?](https://linux22.com/image/76898/%E5%A6%82%E4%BD%95%E5%9C%A8%20bash%2Fzsh%20%E4%B8%AD%E9%87%8D%E7%94%A8%20.gitignore%20%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
这是该内容的内容.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
's -f
aka ( --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