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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Переместить фотографии из одного каталога в несколько с разнесением в ./гггг/мм/дд/чч-мм.jpg  (Прочитано 810 раз)

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

Оффлайн Anotheroneuser

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Друзья, подскажите, подойдёт ли этот сценарий для следующей задачи:
# Операции на съёмном диске
1. Переместить фотографии (м.б., др. материалы) из множества каталогов в один
2. Далее переместить фотографии из этого одного каталога в несколько каталогов с классификацией по гггг - мм -- дд-чч-мм-cc
# Классифировать желательно так, чтобы сохранялась последовательность, в которой были сделаны
# снимки. Иначе утрачивается смысл операции. То есть, желателен такой результат, например:
# Каталог 2018 > Каталог 09 > Каталог 14
# 11ч_00м_00c.jpg
# 11ч_01м_00c.jpg
# 11ч_02м_00c.jpg
# Или как они будут именоваться? Если по EXIF, то можно ли выбрать для нового имени фотографий время
# их получения? Именно время. Без даты.

zse

  • Гость
     — Не актуально уже наверное, но всё же…
Переместить фотографии (м.б., др. материалы) из множества каталогов в один
     — Выполняю такую задачу следующим образом: первым делом делаю имя каждого файла во всех каталогах уникальным, т.е. если в разных каталогах имеются файлы с одинаковыми именами эти имена делаются уникальными.
Код: (bash) [Выделить]
find /home/path1… -type f -exec bash -c 'mv "$0" "`echo \"$0\"|sed -r "s:(.*)/:\1/$(date +%s%4N)_:"`"' {} \;     — Файлы выглядят приблизительно вот так 15390096073046_cdcca986ba42370f0503cbc3d7440140.jpg где 15390096073046_ уникальный префикс.
     — Перемещаются все файлы в одну директорию вообще простейшей командой:
Код: (bash) [Выделить]
find /home/path1… -type f -exec mv -t /home/path2…  {} \;     — Как автоматизировать далее нужно смотреть исходя из данных имеющихся фото… 2018 Oct 08; 10:53 AM

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6691
  • 20% Cooler
    • Просмотр профиля
Код: (bash) [Выделить]
#!/bin/bash
while read FILE; do
    DTF=$(exiv2 "$FILE" | grep -Eo "[0-9]{4}(:[0-9]+){2} ([0-9]+:){2}[0-9]+") || {
        echo "$FILE - NO EXIF! Куда его скопировать - не знаю!"
        continue
        }
    Y=$(echo "$DTF" | cut -d: -f1)
    M=$(echo "$DTF" | cut -d: -f2)
    D=$(echo "$DTF" | cut -d: -f3 | grep -oE '^[0-9]+')
    FF="$Y/$M/$D"

    mkdir -p "./$FF" > /dev/null 2>&1
    F=$(echo "$DTF" | cut -d\  -f2 | sed 's/:/H_/ ; s/:/M_/; s/$/S/')

    cp "$FILE" "./$FF/$F.jpg"
    done < <(find ./ -type f -iname '*.jpg')
« Последнее редактирование: 09 Октября 2018, 04:03:18 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

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