以下のコードを実行しています。
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に尋ねる必要がありますか?