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


12

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.