在自制软件中获取每个已安装公式的大小?

shy*_*upa 11 macos homebrew

我正在做一些不再需要的软件包清理工作,想知道如何用自制软件做这件事.另外很高兴知道某些软件包是否依赖于我打算删除的另一个软件包.

aha*_*gen 10

它不是很漂亮,但你可以做到

$ brew list | xargs brew info
Run Code Online (Sandbox Code Playgroud)

它会输出一些东西

...
/usr/local/Cellar/ant/1.9.6 (1,611 files, 34.8M)
  Poured from bottle on 2016-03-31 at 09:35:41
/usr/local/Cellar/ant/1.9.7 (1,611 files, 34.9M) *
  Poured from bottle on 2016-12-15 at 09:58:56
..
Run Code Online (Sandbox Code Playgroud)

对于您安装的每个包.我确定一些带有grep的向导可以让你在安装了很多水龙头的情况下为你提供一个漂亮的桌子.

  • 我想知道同样的事情.我有自制软件1.3.4.要使输出更具可读性,请使用类似"brew list"的内容 xargs brew info | egrep --color'\ d*\.\ d*(KB | MB | GB)'`. (9认同)

Jog*_*mar 8

brew list --formula | xargs -n1 -P8 -I {} \
    sh -c "brew info {} | egrep '[0-9]* files, ' | sed 's/^.*[0-9]* files, \(.*\)).*$/{} \1/'" | \
    sort -h -r -k2 - | column -t
Run Code Online (Sandbox Code Playgroud)

它以排序形式(按大小)显示如下所示的酿造: 在此处输入图片说明

  • 对我来说它不起作用,我收到此错误:`xargs::没有这样的文件或目录错误:没有可用的公式或名称为“{}”的桶。错误:找不到以前删除的公式。` (2认同)

Chr*_*ris 5

从PTao的解决方案出发,这是一个丑陋的改进版本,其中包括所有版本的组合大小的可读格式之和

for pkg in `brew list -f1 | egrep -v '\.|\.\.'`
  do echo $pkg `brew info $pkg | egrep '[0-9]* files, ' | sed 's/^.*[0-9]* files, \(.*\)).*$/\1/' | awk '{print $1;}/[0-9]$/{s+=$1};/[mM][bB]$/{s+=$1*(1024*1024);next};/[kK][bB]$/{s+=$1*1024;next} END { suffix=" KMGT"; for(i=1; s>1024 && i < length(suffix); i++) s/=1024; printf "\t(all versions: %0.1f%s)",s,substr(suffix, i, 1), $3; }'`
done
Run Code Online (Sandbox Code Playgroud)

示例输出:

ack 173.5KB 178.4KB 182.7KB 190.5KB (all versions: 725.1K)
afl-fuzz 556.5KB 561.3KB (all versions: 1.1M)
aircrack-ng 934.2KB 953KB (all versions: 1.8M)
autoconf 1.9MB (all versions: 1.9M)
autojump 325.4KB (all versions: 325.4K)
automake 2.9MB 3.0MB 3MB (all versions: 8.9M)
bash-completion 608.6KB (all versions: 608.6K)
boost 414.6MB 398.7MB (all versions: 813.3M)
cairo 5.9MB 5.9MB (all versions: 11.8M)
cask 166.6KB (all versions: 166.6K)
cmake 31.4MB (all versions: 31.4M)
coreutils 8.5MB 7.9MB 9MB (all versions: 25.4M)
curl 3MB (all versions: 3.0M)
dos2unix 344.4KB 360.5KB (all versions: 704.9K)
ebook-tools 69.6KB 70.5KB (all versions: 140.1K)
eigen 3.5MB 6.5MB (all versions: 10.0M)
Run Code Online (Sandbox Code Playgroud)

  • 事实证明,这对于大多数用例来说已经足够了:`du -d 1 -h /usr/local/Cellar | gsort --人类数字排序` 。由于某种原因,对“brew”的每次调用都非常非常慢……因此,仅检查地窖中每个文件夹的大小对我来说就快了大约 100 倍。 (2认同)

Fii*_*iil 5

所有brew包的彩色列表及其大小(以及所有版本的总体大小)

for pkg in `brew list -f1 | egrep -v '\.|\.\.'`
  do echo $pkg `brew info $pkg | egrep '[0-9]* files, ' | sed 's/^.*[0-9]* files, \(.*\)).*$/\1/' | awk '{print "\033[1;32m"$1;}/[0-9]$/{s+=$1};/[mM][bB]$/{s+=$1*(1024*1024);next};/[kK][bB]$/{s+=$1*1024;next} END { suffix="  KBMBGBTB"; for(i=1; s>1024 && i < length(suffix); i+=2) s/=1024; printf "\033[0m\t(all versions: \033[33m%0.1f %s\033[0m)",s,substr(suffix, i, 2), $3; }'`
done
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

带有颜色尺寸的冲泡列表