Quita version anterior
De FJWiki
Este script sirve para borrar las versiones anteriores que haya de archivos rpms en directorios como /var/spool/up2date.
El script debe ejecutarse situado en el directorio que se quiere limpiar.
Contenido |
quita_version_anterior
#!/bin/bash lista=`ls *.rpm | sed -e "{s/-[0-9].\+$//gi}" | sort -u` for i in $lista; do borrar=`ls -r -v $i*.rpm | egrep "^${i}-[0-9].+$" | tail -n+2 ` if [ -n "$borrar" ]; then echo Borraremos de $i : echo $borrar rm -f $borrar echo fi done
quita_version_anterior2
El código anterior tenía el problema de ser sólo para rpms. Después de ver que los archivos hdr también son un problema, es mejor tener una versión más flexible.
Uso:
quita_version_anterior2 [rpm|hdr|..]
Código fuente
#!/bin/bash extension=$1 if [ -z "$1" ]; then extension=rpm fi lista=`ls *.$extension | sed -e "{s/-[0-9].\+$//gi}" | sort -u` for i in $lista; do borrar=`ls -r -v $i*.$extension | egrep "^${i}-[0-9].+$" | tail -n+2 ` if [ -n "$borrar" ]; then echo Borraremos de $i : echo $borrar rm -f $borrar echo fi done
quita_version_anterior2B
Si la cantidad de archivos es muy grande (>13000? Ok, no es por cantidad de archivos, sino por cuántos caracteres tienen estos nombres en total, un bash normal suele estar configurado para aguantar 128k, se puede ejecutar getconf ARG_MAX para verificar el límite), ls no puede manejarla (como se explicó antes, en verdad es culpa de bash). Para esto la siguiente versión, cuyo uso es el mismo que el de quita_version_anterior2.
Código fuente
#!/bin/bash extension=$1 if [ -z "$1" ]; then extension=rpm fi lista=`ls | egrep \.$extension$ | sed -e "{s/-[0-9].\+$//gi}" | sort -u` for i in $lista; do borrar=`ls -r -v $i*.$extension | egrep "^${i}-[0-9].+$" | tail -n+2 ` if [ -n "$borrar" ]; then echo Borraremos de $i : echo $borrar rm -f $borrar echo fi done
quita_version_anterior3
Esta versión es recursiva y recibe como parámetro el directorio sobre el cuál se va hacer la limpieza (si se usa sin parámetros asume /var/cache/yum). Esta versión hecha por Gustavo Higa basada en quita_version_anterior2B
Código fuente
#!/bin/bash function quitaVersion(){ extension=$1 cd $2 if [ -z "$1" ]; then extension=rpm fi arqui=$3 lista=`ls | egrep \.$arqui\.$extension$ | sed -e "{s/-[0-9].\+$//gi}" | sort -u` for i in $lista; do borrar=`ls -r -v $i*.$arqui.$extension | egrep "^${i}-[0-9].+$" | tail -n+2 ` if [ -n "$borrar" ]; then echo Borraremos de $i : echo $borrar rm -f $borrar echo fi done } ROOT_PATH="/var/cache/yum" if [ -n "$1" ]; then ROOT_PATH="$1" fi pathList=`find $ROOT_PATH -type d` extensionList="rpm hdr" arquiList="noarch i386 i586 i686 x86_64" for pathItem in $pathList; do for extensionItem in $extensionList; do for arquiItem in $arquiList; do echo Entrando a borrar $extensionItem de $pathItem y arquitectura $arquiItem quitaVersion $extensionItem $pathItem $arquiItem done done done

