최근에 변경된 파일의 파일 이름을 반환하기 위해 git diff를 사용하고 있으며, 반환된 파일 이름을 모든 파일을 검색하고 파일 이름 "-name:"에 "*.yml"이 포함된 파일을 반환하는 grep 표현식으로 파이프하려고 합니다. " 실제 파일에 있습니다. 그러나 내 코드는 기본적으로 git diff를 무시하고 기준과 일치하는 디렉터리의 모든 파일을 반환하는 것 같습니다.
files=($(git -C ${dir} diff --name-only HEAD^ HEAD | grep -rlw --include="*.yml" --exclude-dir=$excluded_paths-e "- name:"))
어떤 도움이라도 대단히 감사하겠습니다!
답변1
git diff --name-only
grep
이해할 수 있는 형식으로 목록을 제공 해야 하는 파일 목록을 생성합니다 .즉명령줄 인수로. 한 가지 방법은
git -C "${dir}" diff -z --name-only HEAD^ HEAD | xargs -0 grep -lw --include="*.yml" --exclude-dir="$excluded_paths" -e "- name:"
-z
null 바이트로 구분되도록 파일 이름을 추가했습니다 . 이 옵션은 -0
xargs
' 입력에 동일한 구분 기호를 사용하도록 지정합니다. 재귀 검색 옵션을 제거 xargs
했습니다 . 이는 확인할 파일의 정확한 목록을 제공하는 것보다 비생산적이었습니다.-r
grep