LINUX.ORG.RU

Bash: Сохранение файлов по дате

 , ,


0

2

Приветствую всех! Суть такова: делаю скриншоты посредством scrot, с определенным интервалом. Есть для этого небольшой bash скрипт:

#!/bin/bash

while true; do scrot -d 120 '%Y-%m-%d-%H.%M.%S.jpg' -e 'mv $f /home/user/sreenshots/'; done
Но появилась проблема: со временем, скриншотов в папке становится слишком много. Удалять их не нужно, но хотелось, чтобы скриншоты сохранялись по месяцам и дням примерно с таким деревом: /home/user/sreenshots/01/01 /home/user/sreenshots/01/02 ... Ну то есть, чтобы скриншоты за 8 июня упали в папку /home/user/sreenshots/06/08 etc. Подскажите, как это реализовать?


mv $f /home/user/sreenshots/$(date +%СИМВОЛ1)/$(date +%СИМВОЛ2)/

СИМВОЛ1 и СИМВОЛ2 — man date

anonymous
()

получаешь month day в формате %m/%d
MD=`date +%m/%d`
создание каталога с подкаталогами, даже если родительского не существует -
mkdir -p /home/user/screenshots/$MD
перенос файлов -
mv $f /home/user/screenshots/$MD

bl ★★★
()
#!/bin/bash

MONTH=`date +"%m"`
DAY=`date +"%d"`
PATHTO=screenshots

if [[ -d $PATHTO/$MONTH/$DAY ]]; then
        scrot '%Y-%m-%d-%H.%M.%S.jpg' -e "mv \$f $PATHTO/$MONTH/$DAY/"
else
        mkdir -p $PATHTO/$MONTH/$DAY
        scrot '%Y-%m-%d-%H.%M.%S.jpg' -e "mv \$f $PATHTO/$MONTH/$DAY/"
fi

Но можно как-то изящнее, наверное. Вызывать по крону.

conformist ★★★
()
Ответ на: комментарий от conformist

Большое спасибо всем, все получилось!

Yazov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.