아래 코드를 실행하고 있습니다.
git rev-list --objects --all |
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' %(id)' |
sed -n 's/^blob //p' |
sort --numeric-sort --key=2 |
gcut -c 1-12,41- |
$(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
git 저장소에 대용량 데이터 파일을 출력합니다. 출력은 다음과 같습니다.
ne3ee2e43e1x 1.0MiB path/to/large/files.png ID
명령에서 호출된 각 데이터 포인트 사이의 구분 기호로 세미콜론을 사용하고 싶습니다. 따라서 예상되는 출력은 다음과 같습니다.
ne3ee2e43e1x; 1.0MiB; path/to/large/files.png; ID
고쳐 쓰다:
Marcus의 답변을 바탕으로 다음을 시도해 보세요.
git rev-list --objects --all | git cat-file --batch-check='%(objecttype);%(objectname);%(objectsize);%(rest)' | sed -n 's/^blob //p' | awk '$2 >= 2^20' | sort --numeric-sort --key=2 | gcut -c 1-12,41- |$(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=1 --round=nearest
그러나 이것은 궁극적으로 아무것도 복사하지 않습니다.
답변1
매개변수를 사용하여 출력 형식을 직접 지정할 수 있습니다 --batch-check
. 따라서 형식 문자열에 세미콜론을 추가하십시오! "일괄 출력" 섹션을 참조하세요.git cat-file
매뉴얼 페이지.
objecttype
또한 처리하려는 blob 출력이 sed를 사용하여 삭제하는 것이라면 굳이 git에 물어볼 필요가 있을까요?