我想知道一种清理var / cache / apt文件夹的方法,即如果它有多个版本,则仅保留软件包的最新版本;如果它是该程序中的唯一一个,则保留软件包。
例如我有几个vlc包(vlc_1.1.11,vlc_1.1.12 ..)和几个wine包(wine1.3_1.3.34,wine1.3_1.3.35,wine1.3_1.3.36,wine1.3_1.3.37 ...)和许多其他人一样。
因此,如何在此文件夹中进行清理,使其仅保留最新软件包。目前,我有2.5 GB,其中大多数只是旧软件包和较新的软件包混合在一起。
我建议以下bash脚本
#!/bin/bash
cd /var/cache/apt/archives/
printf '%s\n' *.deb |
awk -F_ '{ print $1 }' |
sort -u |
while read pkg; do
pkg_files=($(ls -t "$pkg"_*.deb))
nr=${#pkg_files[@]}
if ((nr > 1)); then
unset pkg_files[0]
echo rm "${pkg_files[@]}"
fi
done
如果您对输出列表感到满意,请echo
从该rm
行中删除。
它能做什么?
"_"
,获取程序包名称每个名字
如果列表中有多个包裹
它可以在效率,列出相应套餐之差而得到名称仅包文件加以改进,sort
和sort -u
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句