Чистим папку Загрузки в Mac OS Yosemite используя cron и bash

Небольшое вступление: мне не очень нравится реализация ниженаписанного, хотя оно и имеет место на существование. Сейчас я изучаю иной подход, с которым скоро поделюсь.

Привет мой дорогой друг. Пришло время расчихлить Терминал, вспоминть пару команд на bash и автоматизировать сортировку того хлама, который скопился в папке ~/Downloads твой домашней директории ~/

Кратко напомню:

  • bash — командная оболочка
  • ~/Downloads — путь к папке Downloads (Загрузки), в которую по умолчанию браузеры скачивают все файлы. Полный путь к папке выглядит так /Users/{username}/Downloads/
  • ~/ — путь к домашней директории в короткой записи, полная выглядела бы так /Users/{username}/

Теперь внимательно осматриваемся в папке Загрузки и выделяем те типы файлов, которые там находятся. В моем случае это были картинки с расширениями *.jpg *.jpeg *.png *.gif, парочка документов *.doc *.rtf, немного музыки *.mp3 и пара фильмов *.mkv *.avi.

Я мог бы разобрать всё это руками, главный двигатель прогресса напомнил мне, что живу я в 21 веке и я решил всё это автоматизировать.

Просто и грубо.

Cкрипт

Итак, для начала запускаем Терминал (через Spotlight или другим удобным способом).

Создаём директорию где будут храниться наши скрипты и переходим в неё:

mkdir ~/Applications/Scripts && cd $_

Создаём новый файл и редактируем его:

nano cleanup.sh

Вставляем или пишем от руки следующее:

#!/bin/bash

# Переходим в папку Загрузки
cd ~/Downloads/

# Перемещаем фалы указанных типов в заданные директории 
mv *.jpg *.jpeg *.gif *.png ~/Pictures/
mv *.pdf *.doc *.docx *.txt *.rtf ~/Documents/
mv *.mp3 *.flac *.cue *.wav *.wma ~/Music/
mv *.mp4 *.avi ~/Movies/
mv *.dmg ~/Temp/

# Показываем уведомление о том, что скрипт завершил работу
osascript -e 'display notification "Folder Downloads clear!" with title "Clean Script"'

После этого жмем сочетание Ctrl+O затем Enter — так мы сохраним изменение в файл.
Для выхода из редактора жмем сочетание Ctrl-X.

Отлично, скрипт готов, теперь нужно сделать его «исполнякемым»:

chmod +x cleanup.sh

Cron

Cron — это планировщик задач, используемый для выполнение заданий в определенное время.

Таблица crontab состоит из 6 колонок, которые разделяются пробелами или табами. Первые пять колонок используются для обозначения времени, последняя — указывает команду для исполнения.

Для примера, стандартная запись cron выглядит как:

* * * * * command
- - - - - 
| | | | |
| | | | --- День недели (0-7) (Воскресенье =0 или =7)
| | | ----- Месяц (1-12)
| | ------- День (1-31)
| --------- Час (0-23)
----------- Минута (0-59)

Чтобы команда выполнялась 1 раз в 30 минут, запись будет такой:

*/30 * * * * command

Я же для чистки использую запуск 1 раз в день:

0 0 * * * command

Чтобы задание выполнялось, его необходимо прописать в таблицу cron командой:

env EDITOR=nano crontab -e

В открывшеся пустом файле пишем (вставляем):

0 0 * * * ~/Applications/Scripts/cleanup.sh

После этого жмем сочетание Ctrl+O затем Enter — так мы сохраним изменение в файл.
Для выхода из редактора жмем сочетание Ctrl-X.

Если всё сделано правильно, то в подтверждение должна быть строка crontab: installing new crontab.

Посмотреть список заданий cron можно командой crontab -l.

На этом всё. Есть вопросы? Пиши в комментариях.

  • Vladimir T.

    Скажите, а как изменить дефолтное количество отображаемых загрузок? У меня стоит отображение по сетке и получается 10х9 иконок, занимает 40 % всего экрана, что очень раздражает. Хотелось бы ограничить к-во отображаемых загрузок до 5х5 хотя бы. Есть какой нибудь хак?

    • В настоящий момент не могу проверить, но по-момему была возможность менять размер иконок через «CMD+» или «CMD-» (плюс/минус).
      Попробуйте.

      • Vladimir T.

        Извиняюсь, я скорей всего неправильно задал вопрос. Меня не размер иконок интересует, а их количество. Я хочу, чтобы отображалось меньшее к-во иконок (сейчас у меня 90 по дефолту). Если увеличить размер иконок (CMD+), то их отображаемое к-во уменьшиться, НО места на экране они будут занимать столько же (а то даже и больше). Другими словами, интересует уменьшение размера окна.

        • Объяснили Вы все понятно, просто как я и написал не было возможности проверить.
          Посмотрел — да действительно вышесказанное сочетание клавиш изменяет размер иконок не меняя при этом размер сетки.
          К сожалению в памяти не всплывает ни одного хака, который мог бы решить Вашу проблему