删除备份文件夹中的旧软件包版本

删除备份文件夹中的旧软件包版本

我有一个文件夹,其中包含大量tar.xz包,这些包的文件名中包含版本号。例如:(
vlc-2.2.2-3-x86_64.pkg.tar.xz旧的,应该删除)
vlc-2.2.3-2-x86_64.pkg.tar.xz(新的,所以应该保留)
bash 脚本的任务是检查旧包并删除它们,保留新包和没有重复的包。

答案1

适合这项工作的工具是paccache1

paccache -r -k 1 -c /path/to/cache/dir

这将删除每个包的所有缓存版本,除了通过指定的缓存目录中的-r最新版本之外 。您始终可以将旧包移动到另一个目录,而不是立即删除它们,然后才删除它们。 运行以获取更多详细信息。-k 1-c
paccache -h


1:pacman 软件包中包含灵活的 pacman 缓存清理实用程序

答案2

给定一个文件夹pool,保留每个包的最后 42 个版本。这假设包名称及其版本用下划线分隔。

pkgs=`find ${pool} -type f | cut -f1 -d_ | sort | uniq`
for pkg in ${pkgs}; do
  find `dirname ${pkg}` -name "`basename ${pkg}`_*" | sort -rV | sed -e '1,42d' | xargs -r rm
done

相关内容