Diferencia entre revisiones de «Quita version anterior»
Línea 1: | Línea 1: | ||
− | Este script sirve para borrar las versiones anteriores que haya de archivos rpms en directorios como /var/spool/up2date. | + | Este script sirve para borrar las versiones anteriores que haya de archivos rpms en directorios como <tt>/var/spool/up2date</tt>. |
+ | |||
+ | El script debe ejecutarse situado en el directorio que se quiere limpiar. | ||
== quita_version_anterior == | == quita_version_anterior == | ||
Línea 10: | Línea 12: | ||
for i in $lista; do | for i in $lista; do | ||
borrar=`ls -r -v $i*.rpm | egrep "^${i}-[0-9].+$" | tail -n+2 ` | 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 | ||
+ | </source> | ||
+ | |||
+ | |||
+ | == 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: | ||
+ | <source> | ||
+ | quita_version_anterior2 [rpm|hdr|..] | ||
+ | </source> | ||
+ | |||
+ | === Código fuente === | ||
+ | <source lang="bash"> | ||
+ | #!/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 | ||
+ | </source> | ||
+ | |||
+ | == 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 <tt>getconf ARG_MAX</tt> para verificar el límite), <tt>ls</tt> no puede manejarla (como se explicó antes, en verdad es culpa de <tt>bash</tt>). Para esto la siguiente versión, cuyo uso es el mismo que el de [[#quita_version_anterior2|quita_version_anterior2]]. | ||
+ | |||
+ | === Código fuente === | ||
+ | <source lang="bash"> | ||
+ | #!/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 | if [ -n "$borrar" ]; then | ||
echo Borraremos de $i : | echo Borraremos de $i : |
Revisión del 15:02 3 oct 2008
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