¿Cómo puedo usar un comando para eliminar todos los archivos en Descargas cuyas fechas agregadas son mayores de 1 año?

12

Estoy usando una Mac ¿Cómo puedo usar un comando para eliminar todos los archivos ~/Downloadscuyas fechas agregadas son mayores de 1 año?

Larry
fuente
1
¿Está buscando específicamente un comando de terminal, o sería suficiente algo así como una acción del automatizador?
Jerry
1
¿Qué quiere decir con "cuyas fechas se agregan?" ¿Agregado a qué y cómo?
Allan
1
@Allan Marque "Ver> Organizar por" o las columnas disponibles en "Opciones de vista" en el Finder; OS X rastrea la fecha en que se agregó un elemento a una carpeta.
Millas
@Miles: esos atributos no están disponibles en bash a menos que instale las herramientas XCode Dev y el OP utilizado específicamente ~ / Downloads, que es una convención bash (o más genéricamente, un shell).
Allan

Respuestas:

24

Es un comando relativamente simple para eliminar archivos dentro de un directorio de más de un año. Por ejemplo, el siguiente comando ejecutado en Terminal

find ~/Downloads/ -type f -mtime +365 -exec rm {} \;

eliminará todos los archivos del ~/Downloadsdirectorio anteriores a un año.

  • find es el comando que busca "cosas"

  • -type fle dice a encontrar qué buscar, en este caso archivos

  • -mtime +365 le dice a encontrar que el tiempo modificado debe ser mayor a 365 días

  • -exec rm {} pasa (ejecuta) cada elemento "encontrado" al comando rm

Lo que me gusta hacer es probarlo excluyendo la -exec rm {} \;porción y asegurarme de que obtengo los resultados correctos. Una vez que estoy seguro, solo lo agrego para completar la eliminación.

¡Una advertencia! Estos archivos no se agregan a su "Papelera". El comando omite la Papelera y se elimina inmediatamente, así que úselo con precaución.


Una forma más segura ...

(Gracias al usuario lucasoldaini en los comentarios a continuación)

Si desea mover sus archivos a la "Papelera", simplemente reemplace la -exec rm {} \;parte para-exec mv {} ~/.Trash \;

Permanecerán en su Papelera hasta la próxima vez que la vacíe.

Puede obtener más información sobre cada comando al ver sus páginas de manual:

Alano
fuente
66
En lugar de usar rm, puede mover los archivos ~/.Trashpara evitar que se eliminen de inmediato.
lucasoldaini
2
Tenga en cuenta que la fecha de modificación (en la que está operando esta respuesta) es diferente de la fecha de adición . Además, Safari establecerá la fecha de modificación de un archivo descargado en la proporcionada por el servidor, si está disponible, por lo que incluso un archivo descargado ayer puede tener una fecha de modificación de más de un año.
Millas
2
Si tiene homebrew: brew, instale la papelera y, en su lugar, rm use el comando de la papelera de ahora en adelante.
Kyslik
Actualicé mi respuesta con base en la sugerencia de @lucasoldaini. Prefiero usar métodos integrados en lugar de usar homebrew o MacPorts.
Allan
1
Me gusta tu solución más que la mía.
Jerry
10

Si desea utilizar Automator, puede crear una acción como esta:

Buscar elementos del buscador - Buscar descargas - Todo lo siguiente es cierto: -Fecha creada no está en los últimos 365 días.

Obtener elementos del buscador seleccionados

Mover elementos del buscador a la papelera

Captura de pantalla conveniente: Acciones del automatizador

Jerry W.
fuente
7

Mi elección de herramienta es Hazel , un software multipropósito de bajo costo que hace cosas en archivos y carpetas cuando coinciden con ciertas reglas que usted configura. Esta regla moverá los archivos que no se agregaron el año pasado desde la carpeta Hämtade filer . In difiere de la solución de línea de comando anterior, ya que se ejecuta todos los días, por lo que es una solución set and forget. Captura de pantalla de Hazel pref pane

reiniciar
fuente
Esta es la mejor solución, ya que en realidad usa la Fecha de adición en lugar de la Fecha de modificación, que puede no ser la misma. Una solución de línea de comandos podría buscar kMDItemDateAddeden mdlspero yo recomiendo la solución Hazel lugar.
TJ Luoma