find-size: script para encontrar archivos por tamaño
General, Servidores, Shell, Unix Añadir comentarioHace tiempo que cree este shell script que funciona en cualquier distribución de linux (siempre que esté instalado el paquete findutils), para encontrar archivos en una ruta en función de su nombre y su tamaño.
Es especialmente útil para aquellos que olvidamos con facilidad la sintaxis del comando find, sobre todo a la hora de hacer limpieza de logs perdidos para liberar espacio en disco.
FORMATO: find-size [ruta] [expresion_tamano] ‘[nombre]‘
[expresion_tamano] +5K (Mas de 5 kilobytes)
[expresion_tamano] -2M (Menos de Megabytes)
Puede omitir el nombre de archivo para busacar todos
EJEMPLO:
find-size /tmp +5M ’stats*’
(Busca en /tmp todos los archivos que comienzen con stats y tengan mas de 5 megas)
Instrucciones
- Crear el script /usr/local/bin/find-size con el siguiente contenido y darle permisos de ejecución:
#!/bin/sh
# Encuentra archivos por parte de su nombre en una ruta especificada
# Mostrara un ls de los archivos encontrados
if [ "$1" == "" ]; then
echo "No se ha especificado una ruta para buscar el nombre del archivo."
echo
echo "FORMATO: find-size [ruta] [expresion_tamano] '[nombre]'"
echo " [expresion_tamano] +5K (Mas de 5 kilobytes)"
echo " [expresion_tamano] -2M (Menos de Megabytes)"
echo " Puede omitir el nombre de archivo para busacar todos"
echo
echo "EJEMPLO (Busca en /tmp todos los archivos que comienzen con stats y tengan mas de 5 megas):"
echo " find-size /tmp +5M 'stats*'"
exit 0
fi
ruta=$1
if [ "$1" == "." ]; then
ruta=`pwd`
fi
size=$2
if [ "$2" == "" ]; then
size="+0b"
fi
nombre=$3
if [ "$3" == "" ]; then
nombre="*"
fi
find $ruta -iname "$nombre" -type f -size $size -exec ls -lah {} \; | awk '{print $5"\t"$9}' | more
total=`find $ruta -iname "$nombre" -type f -size $size -exec ls -lah {} \; | wc -l`
echo
echo -e "\033[1;32m$total archivos encontrados\033[0;0m con nombre $nombre en $ruta"
echo
Próximamente find-remove…
Comentarios recientes