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