GNU/Linux >> Linux の 問題 >  >> Linux

gitでコミットされていない、または追跡されていないファイルの合計サイズを見つける

for ループの出力を合計し、合計を出力する単純な awk ステートメントを追加して、edmondscommerce の回答を適合させました (Mb に変換するために 1024*1024 で除算)

for f in `git status --porcelain | sed 's#^...##'`; do du -cs $f | head -n 1; done | sort -nr  | awk ' {tot = tot+$1; print } END{ printf("%.2fMb\n",tot/(1024*1024)) }' 

--porcelain は、git リポジトリのルートからの相対パス名を出力することに注意してください。したがって、サブディレクトリでこれを行うと、du ステートメントはファイルを見つけることができません..

(おっと; SoF での私の最初の答え、力がありますように)


スペースを含むファイルがクラッシュしたため、これを修正したバージョンを使用しました。サイズの計算もわからず、無駄な head を削除しました :

git status --porcelain | sed 's/^...//;s/^"//;s/"$//' | while read path; do
    du -bs "$path" ;
done | sort -n | awk ' {tot = tot+$1; print } END { printf("%.2fMB\n",tot/(1024*1024)) }'

while を使用することを好みます for よりも少し安全なので :改行を含むファイルで厄介なことを行うことができるので、 null を渡す必要があることを望みます -個別のファイルを取得してもステータスを grep で取得できますが、適切な方法が見つかりませんでした。


自分の質問に答えたと思います:

for f in `git status --porcelain | sed 's#^...##'`; do du -cs $f | head -n 1; done | sort -nr;  echo "TOTAL:"; du -cs .

しかし、私はより良いアイデアや便利なトリックを受け入れます。私の現在の出力は13GBです:)

上記のコマンドは基本的にそこにあります。git status から行ごとに合計が表示されますが、合計は表示されません。現在、最後にすべてのファイルの合計を取得していますが、これは正しくありません。 bc を使ってみた しかし、それを機能させることができませんでした


Linux
  1. Linuxの検索コマンド

  2. Linuxのディレクトリ/フォルダーごとに合計ファイルのディスク使用サイズを一覧表示する

  3. ワイルドカードに一致するファイルの合計サイズを見つける短いコマンド

  1. LinuxでXサイズよりも大きいまたは小さいファイルを見つける方法

  2. サイズと拡張子でファイルを検索する方法は?

  3. 特定のユーザーの合計ディスク使用量

  1. 最大のファイルを再帰的に検索しますか?

  2. Linuxで1GBサイズを超えるすべてのファイルを見つける方法は?

  3. ファイルを検索してコピーする