Come posso utilizzare un comando per eliminare tutti i file nei download le cui date aggiunte sono maggiori di 1 anno?


12

Sto usando un Mac. Come posso usare un comando per cancellare tutti i file nelle ~/Downloadscui date aggiunte sono maggiori di 1 anno?


1
Sei in particolare alla ricerca di un comando terminale o sarebbe sufficiente qualcosa come un'azione di automazione?
Jerry W.,

1
Cosa intendi con "di chi sono state aggiunte le date?" Aggiunto a cosa e come?
Allan,

1
@Allan Seleziona "Visualizza> Disponi per" o le colonne disponibili in "Visualizza opzioni" nel Finder; OS X tiene traccia della data in cui un elemento è stato aggiunto a una cartella.
Miglia

@Miles: questi attributi non sono disponibili in bash a meno che non si installino gli strumenti XCode Dev e l'OP specificamente utilizzati ~ / Download che è una convenzione bash (o più genericamente, una shell).
Allan,

Risposte:


24

È un comando relativamente semplice per eliminare i file all'interno di una directory superiore a un anno. Ad esempio, il seguente comando eseguito nel Terminale

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

eliminerà tutti i file nella ~/Downloadsdirectory più vecchia di un anno.

  • find è il comando che cerca "roba"

  • -type fdice di trovare cosa cercare, in questo caso i file

  • -mtime +365 indica che il tempo modificato dovrebbe essere maggiore di 365 giorni

  • -exec rm {} passa (esegue) ogni elemento "trovato" al comando rm

Quello che mi piace fare è testarlo escludendo la -exec rm {} \;porzione e assicurandomi di ottenere i risultati corretti. Una volta che sono sicuro, lo aggiungo solo per completare la rimozione.

Un avvertimento !! Questi file non vengono aggiunti al "Cestino". Il comando ignora il Cestino e viene immediatamente eliminato, quindi utilizzalo con cautela.


Un modo più sicuro ...

(Grazie all'utente lucasoldaini nei commenti qui sotto)

Se si desidera spostare i file nel "Cestino", è sufficiente sostituire la -exec rm {} \;parte in-exec mv {} ~/.Trash \;

Rimarranno nel Cestino fino alla successiva svuotamento.

Puoi ottenere maggiori informazioni su ciascun comando visualizzando le loro pagine man:


6
Invece di utilizzare rm, è possibile spostare i file ~/.Trashper impedirne la cancellazione immediata.
lucasoldaini,

2
Si noti che la data modificata (su cui sta funzionando questa risposta) è diversa dalla data aggiunta . Inoltre, Safari imposterà la data di modifica di un file scaricato su quella fornita dal server, se disponibile, quindi anche un file scaricato ieri può avere una data di modifica più vecchia di un anno.
Miglia

2
Se hai homebrew: brew install trash e invece rm usa il comando trash da ora in poi.
Kyslik,

Ho aggiornato la mia risposta in base al suggerimento di @lucasoldaini Preferisco usare metodi integrati piuttosto che usare homebrew o MacPorts.
Allan,

1
Mi piace la tua soluzione più della mia.
Jerry W.,

10

Se si desidera utilizzare Automator è possibile creare un'azione in questo modo:

Trova elementi del Finder - Cerca download - Sono vere tutte le seguenti condizioni: -Data creata non negli ultimi 365 giorni.

Ottieni elementi del Finder selezionati

Sposta gli elementi del Finder nel Cestino

Schermata conveniente: Azioni dell'automatore


7

La mia scelta di strumento è Hazel , un software multiuso a basso costo che esegue operazioni su file e cartelle quando soddisfano determinate regole impostate. Questa regola sposterà i file non aggiunti l'anno scorso dalla cartella Hämtade filer . In differisce dalla soluzione della riga di comando sopra come funziona ogni giorno, quindi è una soluzione fissa e dimentica. Schermata del riquadro Pref Hazel


Questa è la soluzione migliore, in quanto utilizza effettivamente Data aggiunta anziché Data modifica, che potrebbe non essere la stessa. Una soluzione da riga di comando potrebbe cercare kMDItemDateAddedin, mdlsma consiglio vivamente la soluzione Hazel.
TJ Luoma,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.