Как я могу использовать команду для удаления всех файлов в Загрузках, даты добавления которых превышают 1 год?

12

Я использую Mac. Как я могу использовать команду для удаления всех файлов ~/Downloads, даты добавления которых превышают 1 год?

Larry
источник
1
Вы специально ищете терминальную команду, или будет достаточно чего-то вроде действия automator?
Джерри В.
1
Что вы подразумеваете под "чьи даты добавляются?" Добавил что и как?
Аллан
1
@Allan Проверьте «Вид> Упорядочить по» или столбцы, доступные в «Параметры просмотра» в Finder; OS X отслеживает дату, когда элемент был добавлен в папку.
Майлз
@Miles - эти атрибуты недоступны в bash, пока вы не установите инструменты XCode Dev и специально используемый OP ~ / Downloads, что является соглашением bash (или, в более общем смысле, оболочкой).
Аллан

Ответы:

24

Это относительно простая команда для удаления файлов в каталоге более одного года. Например, следующая команда выполняется в терминале

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

удалит все файлы в ~/Downloadsкаталоге старше одного года.

  • find это команда, которая ищет "вещи"

  • -type fговорит найти что искать, в этом случае файлы

  • -mtime +365 говорит найти, что измененное время должно быть больше 365 дней

  • -exec rm {} передает (выполняет) каждый «найденный» элемент в команду rm

Что мне нравится делать, так это проверять, исключая -exec rm {} \;порцию, и убедиться, что я получаю правильные результаты. Как только я уверен, я просто добавляю это, чтобы закончить удаление.

Одна оговорка !! Эти файлы не добавляются в вашу корзину. Команда обходит корзину и сразу удаляется, поэтому используйте ее с осторожностью.


Более безопасный путь ...

(Спасибо пользователю lucasoldaini в комментариях ниже)

Если вы хотите переместить ваши файлы в «Корзину», просто замените -exec rm {} \;часть на-exec mv {} ~/.Trash \;

Они останутся в вашей корзине, пока вы в следующий раз не очистите ее.

Вы можете получить больше информации о каждой команде, просматривая их справочные страницы:

Аллан
источник
6
Вместо того, чтобы использовать rm, вы можете переместить файлы в~/.Trash чтобы предотвратить их немедленное удаление.
lucasoldaini
2
Обратите внимание, что дата изменения (над которой работает этот ответ) отличается от даты добавления . Кроме того, Safari установит дату модификации загруженного файла на дату, предоставленную сервером, если таковая имеется, поэтому даже файл, загруженный вчера, может иметь дату модификации более года.
Майлз
2
Если у вас есть homebrew: brew install trash и вместо этого rm теперь используйте команду trash.
Kyslik
Я обновил свой ответ, основываясь на предложении @lucasoldaini, которое я предпочитаю использовать встроенными методами, а не домашним пивом или MacPorts.
Аллан
1
Мне нравится ваше решение больше, чем мое.
Джерри В.
10

Если вы хотите использовать Automator, вы можете создать действие так:

Поиск элементов Finder - Поиск загрузок - Все перечисленное верно: -Дата создана не за последние 365 дней.

Получить выбранные элементы Finder

Переместить элементы поиска в корзину

Удобный скриншот: Действия Automator

Джерри В.
источник
7

Мой выбор инструмента - Hazel , недорогая многоцелевая программа, которая работает с файлами и папками, когда они соответствуют определенным правилам, которые вы установили. Это правило будет перемещать файлы, не добавленные в прошлом году, из папки Hämtade filer . Решение отличается от решения для командной строки, описанного выше, так как оно запускается каждый день, поэтому это решение для установки и забывания. Снимок экрана: панель Hazel pref

перезагрузка
источник
Это лучшее решение, поскольку на самом деле используется Дата добавления, а не Дата изменения, которая может не совпадать. Командная строка , решение может отыскать kMDItemDateAddedв mdlsно я настоятельно рекомендую решение Hazel вместо этого.
TJ Luoma