Scripts Linux para borrar archivos antiguos

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
joseacevedo
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Jue Abr 23, 2015 12:45 pm

Scripts Linux para borrar archivos antiguos

Mensaje por joseacevedo » Jue Abr 23, 2015 12:58 pm

Hola,
Estoy haciendo un script para borrar todos los archivos *.ENV con antiguedad mayor a 100 dias. Tengo 2 versiones que me funcionan si ejecuto la sentencia directamente en la consola, pero si creo el archivo .sh y lo ejecuto desde allí, aunque funciona me da un mensaje que no comprendo. Me explico:

Creo el archivo .sh y pongo unicamente la sentencia, luego desde consola la ejecuto ./archivosh.sh

Modo 1:
find /home/xi313256/MT940*.ENV -mtime +100 -exec rm -f {} \;
Funciona directo en la consola

Si lo ejecuto desde el archivo .sh me dice find: missing argument to `-exec', no funciona desde la consola.
$ ./borradomt940.sh
find: missing argument to `-exec'


Modo 2:
rm `find /home/xi313256/MT940*.ENV -mtime +100`;
Funciona directo desde consola

Si lo ejecuto desde el archivo .sh funciona, es decir, borra los archivos pero me indica un mensaje que creo no debería salir
$ ./borradomt940.sh
: not found [No such file or directory]

¿Me podeis ayudar como mejorar la sentencia para que no salga ese mensaje en el Modo 2 ó para que funciona el Modo 1?, ¿alguna otra manera de hacerlo?.

Gracias,

José María
Avatar de Usuario
cargoan
Forista Medio
Forista Medio
Mensajes: 281
Registrado: Dom Oct 19, 2014 6:26 pm

Re: Scripts Linux para borrar archivos antiguos

Mensaje por cargoan » Jue Abr 23, 2015 3:28 pm

El error es el mismo.

Si lo único que quieres es evitar el mensaje, puedes redirigir stderr a null:
find /home/xi313256/MT940*.ENV -mtime +100 -exec rm -f {} \; 2>/dev/null
o
rm `find /home/xi313256/MT940*.ENV -mtime +100` 2>/dev/null

Pero lo llamas mal. El orden de los argumentos es: find paths... tests... acciones...,
find /home/xi313256 -name 'MT940*.ENV' -mtime +100 -exec rm -f {} \; 2>/dev/null

Para borrar lo mejor es usar la acción delete de find:
find /home/xi313256 -type f -name 'MT940*.ENV' -mtime +100 -delete

si no quieres que borre en los subdirectorios
find /home/xi313256 -maxdepth 1 -type f -name 'MT940*.ENV' -mtime +100 -delete
«La simplicidad es la máxima sofisticación» L. da Vinci
Arch Linux 64 (liquorix+BFS)
joseacevedo
Forista Nuevo
Forista Nuevo
Mensajes: 3
Registrado: Jue Abr 23, 2015 12:45 pm

Re: Scripts Linux para borrar archivos antiguos

Mensaje por joseacevedo » Mié Abr 29, 2015 10:57 am

Gracias por la aclaracion.
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje