我使用git diff返回最近更改的文件的文件名,并尝试将返回的文件名导入一个grep表达式,该表达式搜索每个文件并返回文件名中包含“*.yml”和实际文件中包含“- name:”的文件。然而,我的代码似乎只返回目录中符合条件的所有文件,基本上忽略了git diff。
files=($(git -C ${dir} diff --name-only HEAD^ HEAD | grep -rlw --include="*.yml" --exclude-dir=$excluded -e "- name:"))
任何帮助将不胜感激!
2条答案
按热度按时间iyzzxitl1#
使用这个,使用最佳实践来馈送数组,并避免以下形式:
而是用途:
来自
git
和grep
的-z
旨在解析包含换行符或特殊字符的偶数文件。kgqe7b3p2#
经过一些修改后,这应该可以按预期工作:
可能会出现grep命令找不到任何匹配项的情况,这将导致xargs中的错误。您可以为此添加一个检查。