
tar.xz
ファイル名にバージョン番号を含む複数のパッケージを含むフォルダがあります。たとえば、次のようになります。
vlc-2.2.2-3-x86_64.pkg.tar.xz
(以前のパッケージなので削除する必要があります)
vlc-2.2.3-2-x86_64.pkg.tar.xz
(新しいパッケージなので保持する必要があります)
bashスクリプトの作業は、古いパッケージを確認して削除して新しいパッケージを保持して重複しないようにすることです。
答え1
作業に適したツールはpaccache
1です。
paccache -r -k 1 -c /path/to/cache/dir
これにより、指定されたキャッシュディレクトリを介して、最新バージョンを除く各パッケージのすべてのキャッシュされたバージョンが削除されます-r
。すぐに削除して後で削除する代わりに、いつでも古いパッケージを別のディレクトリに移動できます。詳細については、実行してください。-k 1
-c
paccache -h
1:パックマンパッケージには、柔軟なパックマンキャッシュクリーンアップユーティリティが含まれています。
答え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