Иногда бывает так что "гуляя" по просторам Интернета скачиваешь разные файлы(там картинка понравилась, где-то песенку прикольную надыбал ну и т.д.) и если их сразу не рассортировать то со временем(а если Вы еще и не единственный пользователь ПК) папка "Загрузки" превращается в "СваЛкУ", и на то, что бы все это разложить "по полочкам" может уйти не мало времени и сил. Но зачем что-то делать вручную если это можно сделать автоматически!? Немого поковырявшись в справочнике по bash + Интернет, я сделал для себя вот такой скрипт для автоматической сортировки файлов:
#!/bin/bash
VIDEO=$HOME"/Видео"
PICTURE=$HOME"/Изображения"
DOCS=$HOME"/Документы"
MUSIC=$HOME"/Музыка"
# проверяем, существуют ли каталоги. Если нет - создаем их
if [ ! -e $VIDEO ]
then
mkdir -p $VIDEO
fi
if [ ! -e $PICTURE ]
then
mkdir -p $PICTURE
fi
if [ ! -e $DOCS ]
then
mkdir -p $DOCS
fi
if [ ! -e $MUSIC ]
then
mkdir -p $MUSIC
fi
# сортируем файлы
for file in *
do
if [ -f "$file" ] # если файл "регулярный" (не директория и не файл-устройство)
then
case "$file" in
*.avi|*.flv|*.wmv|*.vob)
mv -v "$file" $VIDEO
;;
*.jpg|*.png|*.gif|*.bmp)
mv -v "$file" $PICTURE
;;
*.txt|*.doc|*.djvu|*.odt|*.pdf)
mv -v "$file" $DOCS
;;
*.mp3)
mv -v "$file" $MUSIC
;;
esac
fi
done
Скрипт в первую очередь создавался для себя(надеюсь что он поможет еще кому-то облегчить рутинную работу по разбиранию завалов в папке с загрузками) и на оригинальность или "открытие Америки" я не претендую =)
Возможно скрипт не идеален(я ведь только учусь =) ) и его можно как то доработать, не стесняетесь пишите в комментариях что и как можно улучшить.
Комментарии (14)
Я сам баш не умею, но очень нужно следующие: переместить определенный тип файла в определенную директорию, а остальные файлы в другую. Возможно ли такое В данном скрипте?
mv *.avi /mnt/video
?mv *.png /mnt/picz
Вы меня не поняли. Еще раз: мне надо допустим png переместить в /mnt/picz, а все остальные типы (не перечесляя их) в другую.
mv /home/download/*.png /mnt/picz
mv /home/download/*.* /mnt/111
Все же, хоть немного, но читать по линуксу надо. Или учиться совсем не прикалывает?
Спасибо. Я так понял вторую строчку надо в самый конец пихать иначе в папку /mnt/111 полетит все и в том числе png?
Да.
ЗЫ Обратите внимание на эффект удовлетворения от обучения. :)
ЗЫЫ В этой системе очень и очень много интересного именно в, на первый взгляд унылой, коммандной строке. Можно делать действительно удивительные вещи.
Такой вопрос: допустим я запихну скрипт в планировщик заданий для автоматической сортировки, с частотой 1 раз в минуту, если скрипт будет долго выполняться и запустится второй, что тогда? Получится конфликт? И еще: что будет если замутить скрипт во время записи в директорию?
Извини,тебе зачем в одну минуту то?Не проще ли один раз в неделю или в день. Нет,не будет ни какого конфликта.
В неделю это если редко туда файлы закидываешь. Я буду закидывать часто, раз в минуту и хочу чтобы они оперативно перемещались куда надо.
Конфликта по идее не будет. А что, за минуту во входящем директории может так много файлов появиться? Если они из инета скачиваются, то в пределах системы mv побыстрее работает. Особенно, если перемещение в пределах одного логического диска происходит. Там вообще очень быстро, десятки тысяч файлов можно переместить за минуту.
Да, у меня может. И диск один. И даже при записи большого файла в директорию и запуска скрипта тоже ничего страшного не будет?
Не будет, если перемещение в пределах одного логического диска. За такие вещи отвечает ядро, которое управляет ext4 (я надеюсь у Вас именно такая файловая система) Если перемещение между двумя разными логическими дисками - тогда перенесется только та часть файла, которая была записанна на момент запуска скрипта. :(
Но есть и хорошие новости. Система позволяет определить - открыт ли файл на запись в данный момент и можно построить скрипт таким образом, чтоб недописанные файлы не перемещались. А вообще, если бы Вы озвучили полностью задачу, которую надо решить, было бы проще что-то советовать.
Ну я буду перемещать в пределах одного диска. Вопросов больше нет.
Incron ?
Отправить комментарий