8 votos

os x terminal - quitar archivos mayor de x días

intentando crear un scripts que elimina los archivos más de X días. ¿Parecía recta hacia adelante lo suficiente pero todos los archivos parecen que conseguir quitarse?

find /Volumes/Groups/Projects/530_BFAMI/test/ -ctime +30 -print -exec rm {} \;

¿alguna idea bienvenida!?

¿También sería bueno para imprimir información de archivo para los partidos como tal vez mis fechas son engañosas en finder?

15voto

jm666 Puntos 4489

Nunca sugiriendo -exec rm ....

rm es simplemente demasiado peligroso comando. Siempre seco-ejecutar en primer lugar. En mi humilde opinión, es mejor usar esto:

find /Volumes/Groups/Projects/530_BFAMI/test/ -ctime +30 -print0 | xargs -0 -n1

esto mostrará el funcionamiento en seco y sólo cuando usted está satisfecho, puede agregar el rm hasta el final

find /Volumes/Groups/Projects/530_BFAMI/test/ -ctime +30 -print0 | xargs -0 rm

Si usted comienza a usar este piped to xargs versión, siempre se puede añadir más filtros, como:

find /some/where -mtime +3d -print0 | grep -ziE '\.(jpg|png|gif)$' | xargs -0 rm

y similares (más) combinaciones poderosas.

2voto

Jax Puntos 23

Para responder a la pregunta en su comentario: Usted puede unirse a criterios separados sólo por un listado de ellos, uno después del otro. Si lo prefiere, puede utilizar -a o -and de entre ellos, pero estos son redundantes. También puede utilizar -o o -or para el operador, y se pueden utilizar paréntesis – que debe ser citado para protegerlos de la cáscara, como en \( y \) para el agrupamiento.

Para los detalles completos, ejecutar: man find

2voto

jimx Puntos 101

Se considera peligroso de usar-exec rm sin primero ls. Probablemente, usted debe comprobar que primero. Inversa de verificación también es una buena sugerencia para decirle si el momento es correcto.

find . -maxdepth 1 -type f -mtime -30d -exec ls -latr {} \;

O

find . -maxdepth 1 -type f -atime -30d -exec ls -latr {} \;
  1. Restringe los resultados de la búsqueda. Asegúrese de que lo que se pide explícitamente.
  2. Comparar para ver si el resultado opuesto es lo que en realidad ha sido excluido de su mandato original.
  3. Probablemente, -mtime o -atime más adecuada, pero comparar el resultado y ver si son realmente lo que usted necesita.

0voto

Ilya Melamed Puntos 1238

Intente esto: find . -ctime +30 | xargs rm -r 2> /dev/null

Por alguna razón, esto se ejecuta rm dos veces. Así que simplemente redirigir los errores a que el agujero negro /dev/null

Disfrutar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X