Comment puis-je utiliser une commande pour supprimer tous les fichiers dans Téléchargements dont les dates ajoutées sont supérieures à 1 an?


12

J'utilise un Mac. Comment puis-je utiliser une commande pour supprimer tous les fichiers ~/Downloadsdont les dates ajoutées sont supérieures à 1 an?


1
Êtes-vous spécifiquement à la recherche d'une commande de terminal, ou est-ce que quelque chose comme une action d'automate suffirait?
Jerry W.

1
Que voulez-vous dire par "dont les dates sont ajoutées?" Ajouté à quoi et comment?
Allan

1
@Allan Cochez "Affichage> Réorganiser par" ou les colonnes disponibles dans "Options d'affichage" dans le Finder; OS X suit la date à laquelle un élément a été ajouté à un dossier.
Miles

@Miles - ces attributs ne sont pas disponibles dans bash à moins que vous n'installiez les outils XCode Dev et l'OP spécifiquement utilisé ~ / Downloads qui est une convention bash (ou plus généralement, un shell).
Allan

Réponses:


24

C'est une commande relativement simple pour supprimer des fichiers dans un répertoire supérieur à un an. Par exemple, la commande suivante exécutée dans Terminal

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

supprimera tous les fichiers du ~/Downloadsrépertoire datant de plus d'un an.

  • find est la commande qui recherche les "trucs"

  • -type findique ce qu'il faut rechercher, dans ce cas, les fichiers

  • -mtime +365 indique que l'heure modifiée doit être supérieure à 365 jours

  • -exec rm {} passe (exécute) chaque élément "trouvé" à la commande rm

Ce que j'aime faire, c'est le tester en excluant la -exec rm {} \;portion et m'assurer d'obtenir les bons résultats. Une fois que je suis certain, je l'ajoute juste pour terminer la suppression.

Une mise en garde !! Ces fichiers ne sont pas ajoutés à votre "Corbeille". La commande contourne la corbeille et est immédiatement supprimée, utilisez-la donc avec prudence.


Une manière plus sûre ...

(Merci à l'utilisateur lucasoldaini dans les commentaires ci-dessous)

Si vous souhaitez déplacer vos fichiers dans la "Corbeille", remplacez simplement la -exec rm {} \;partie-exec mv {} ~/.Trash \;

Ils resteront dans votre corbeille jusqu'à la prochaine fois que vous la viderez.

Vous pouvez obtenir plus d'informations sur chaque commande en consultant leurs pages de manuel:


6
Au lieu d'utiliser rm, vous pouvez déplacer les fichiers vers ~/.Trashpour éviter qu'ils ne soient immédiatement supprimés.
lucasoldaini

2
Notez que la date modifiée (sur laquelle cette réponse fonctionne) est différente de la date ajoutée . De plus, Safari fixera la date de modification d'un fichier téléchargé à celle fournie par le serveur si elle est disponible, donc même un fichier téléchargé hier peut avoir une date de modification de plus d'un an.
Miles

2
Si vous avez homebrew: brew install trash et à la place rm utilisez la commande trash à partir de maintenant.
Kyslik

J'ai mis à jour ma réponse en fonction de la suggestion de @lucasoldaini. Je préfère utiliser des méthodes intégrées plutôt que des homebrews ou des MacPorts.
Allan

1
J'aime votre solution plus que la mienne.
Jerry W.

10

Si vous souhaitez utiliser Automator, vous pouvez créer une action comme celle-ci:

Rechercher des éléments du Finder - Rechercher des téléchargements - Toutes les conditions suivantes sont vraies: -La date de création n'est pas au cours des 365 derniers jours.

Obtenir les éléments sélectionnés du Finder

Déplacer les éléments du Finder vers la corbeille

Capture d'écran pratique: Actions de l'automate


7

Mon choix d'outil est Hazel , un logiciel polyvalent à faible coût qui fait des choses sur les fichiers et les dossiers lorsqu'ils correspondent à certaines règles que vous avez définies. Cette règle déplacera les fichiers non ajoutés l'année dernière du dossier Hämtade filer . En diffère de la solution de ligne de commande ci-dessus car elle s'exécute tous les jours, c'est donc une solution de définition et d'oubli. Capture d'écran du panneau de préférences Hazel


C'est la meilleure solution, car elle utilise en fait la date ajoutée plutôt que la date de modification, qui peut ne pas être la même. Une solution de ligne de commande pourrait chercher kMDItemDateAddeddans mdlsmais je recommande fortement la solution de Hazel à la place.
TJ Luoma
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.