Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Bash: Сохранение файлов по папкам  (Прочитано 1013 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yazov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
    • Язов
Приветствую всех! Суть такова: делаю скриншоты посредством 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.
Подскажите, как это реализовать?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Bash: Сохранение файлов по папкам
« Ответ #1 : 08 Июня 2016, 08:50:16 »
-e 'picpath="/home/user/sreenshots/$(date +'%m/%d')" ; [ -d "$picpath" ] && mkdir -p "$picpath" ; mv $f "$picpath"'
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Yazov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
    • Язов
Re: Bash: Сохранение файлов по папкам
« Ответ #2 : 08 Июня 2016, 11:18:39 »
-e 'picpath="/home/user/sreenshots/$(date +'%m/%d')" ; [ -d "$picpath" ] && mkdir -p "$picpath" ; mv $f "$picpath"'
К сожалению не сработало.
Сделал так:
#!/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
И запуск по крону.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Bash: Сохранение файлов по папкам
« Ответ #3 : 08 Июня 2016, 16:53:53 »
Путь нужен полныйPATHTO=/home/user/screenshots
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Bash: Сохранение файлов по папкам
« Ответ #4 : 08 Июня 2016, 17:26:34 »
Yazov,
mktemp - успел создати в файли.
1:L~$
1:L~$ mktemp -p ./ XXXX-AAA.txt
./G9ky-AAA.txt
1:L~$
1:L~$ ls ./G9ky-AAA.txt
./G9ky-AAA.txt
1:L~$
1:L~$ mktemp -p ./ G9ky-AAA.txt
mktemp: слишком мало X-ов в шаблоне «G9ky-AAA.txt»
1:L~$

Wars ~.o

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Bash: Сохранение файлов по папкам
« Ответ #5 : 08 Июня 2016, 18:55:13 »
Код: (bash) [Выделить]
#!/bin/bash
DATE_DIR="$HOME/screenshots/$(date +"%m")/$(date +"%d")"
[ -d "$DATE_DIR" ] || mkdir -p "$DATE_DIR"
scrot '%Y-%m-%d-%H.%M.%S.jpg' -e "mv \$f $DATE_DIR"

 

Страница сгенерирована за 0.04 секунд. Запросов: 25.