Linux/Unix Shell Scripting - borrar carpeta/ ficheron sin discriminar antiguedad, solo mas antiguo.

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 2 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

borrar carpeta/ ficheron sin discriminar antiguedad, solo mas antiguo.

Publicado por Dani (3 intervenciones) el 11/04/2018 17:48:57
hola buenas !! he hecho un script medio patata, tambien recien aprendi algo de programacion.

queria hacer un script que me borre la carpeta mas antigua pero que no discrimine por ejemplo por x dias atras, sino simplemente la mas antigua.

es para por ejemplo un centralita que graba audios, pues que me borre los mas antiguas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#bin/bash
#comprobar el espacio ##
 
limite="89"
directorio="/var/spool/asterisk/monitor"
formato='*.wav'
 
df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}' >> temp.log
 
temp=$( cat temp.log)
 
if [ $limite -lt $temp ]; then
        find $directorio -name $formato -type f -ctime +60 -delete
        clear
        echo "BORRADO!"
 
else
        echo " por ahora nada para borrar "
        df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}'
rm -rf temp.log
fi

yo tengo este por ejemplo que me borra los archivos mas antiguos de 60 dias cuando llega al 89% usado, pero en el caso que por ejemplo, no encuentre ficheros mas antiguos a 60 pero siga teniendo el disco lleno....

como deberia hacer el codigo ??
estaba pensando en preguntar 50, luego 40, y en caso de ser afirmativo pues va borrando lo mas antiguo que va comparando.


mi idea principal es que borre simplemente el directorio mas antiguo, da igual si es 60, 50, 49 o 20, simplemente que borre el mas antiguo...

perdon por este tipo de preguntas seguramente un parametro de un comando lo puede hacer...

gracias por el tiempo <!! un saludo !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

borrar carpeta/ ficheron sin discriminar antiguedad, solo mas antiguo.

Publicado por Tom (361 intervenciones) el 11/04/2018 20:43:23
Algo parecido a:

1
rm -rf $(ls -tr $directorio/$formato | head -n 1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

borrar carpeta/ ficheron sin discriminar antiguedad, solo mas antiguo.

Publicado por Tom (361 intervenciones) el 11/04/2018 20:46:00
Vaya, no me deja editar. Debo añadir que lo hagas con muuucho cuidado, puedes cargarte tu sistema al borrar mucho más de lo que piensas

1
2
3
TARGET=$(ls -tr $directorio/$formato | head -n 1)
echo "rm -rf $TARGET"
## rm -rf $TARGET
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 2 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

borrar carpeta/ ficheron sin discriminar antiguedad, solo mas antiguo.

Publicado por Dani (3 intervenciones) el 12/04/2018 18:03:23
he camiado el codigo por este resulta que no me borra cosas, pero no me salta ningun fallo.

el fallo que veo a este script sera que cuando sea el mes "01" no va funcionar porque no podra restar a enero 2 (enero -2)
en fin sigo teniendo el mismo problema.
necesito borrar el fichero mas antiguo, que se van creando por dias y meses.

*2018/01/01/fichero1.wav
*2018/02/15/fichero1.wav

y asi sucesivamente...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#bin/bash
 
limite="85"
dir="/var/spool/asterisk/monitor"
formato='*.wav'
mes_actual=`date +%m`
anyo_actual=`date +%Y`
ref="2";
 
# espacio en disco #
df -h | grep /dev/xvdb1 | sed s/%//g | awk '{print $5}' >> temp.log
 
temp=$( cat temp.log)
 
if [ $limite -le $temp ]; then
        A_BORRAR=$((10#$mes_actual-$ref))
        rm -Rf $dir/$anyo_actual/$A_BORRAR
        echo "borrado mes" "$A_BORRAR"
else
        echo "nada para borrar"
 
fi
 
echo "todo OK"
rm -Rf temp.log

ya llevo 3 dias y me va costando mucho esto..aiixxx!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar