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


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

Автор Тема: Автоматический перенос фотографий с флешки  (Прочитано 1606 раз)

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

Оффлайн S.D. aka Xvost

  • Автор темы
  • Активист
  • *
  • Сообщений: 411
    • Просмотр профиля
В Винде есть такая фича - автоматический перенос фото с флешки в папку "Изображения" или другую, по выбору. Как подобно реализовать в Ubuntu? Подозреваю, что можно с помощью скрипта, указав его выполнение при установке флешки с фото в разделе настроек "Сменные носители". А вот сам скрипт? Я в их написании не силён. Может кто подскажет пример?
Beelink Mini S12 Pro; Intel® Alder Lake N100, 0.8 Ghz / 3.4 Ghz × 4; Intel® UHD Graphics 750 Mhz; 16 Гб, DDR4.
Linux Mint 22 Cinnamon.

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #1 : 03 Декабря 2014, 20:52:02 »
Что-то такое вроде (больно извращенное, да, зато одна команда)

cp `find /media/usb_device -type f -exec file {} \; | grep -o -P '^.+: \w+ image' | awk '{ print $1}' | rev | cut -c 2- | rev` ~/Pictures/
где вместо /media/usb_device - подставить свою флеху, а вместо ~/Pictures/ - желаемое место складывания фоток
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн S.D. aka Xvost

  • Автор темы
  • Активист
  • *
  • Сообщений: 411
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #2 : 03 Декабря 2014, 21:15:50 »
Благодарю!

Вот только нужно, что бы исходные фото на флешке удалялись. Как?
Beelink Mini S12 Pro; Intel® Alder Lake N100, 0.8 Ghz / 3.4 Ghz × 4; Intel® UHD Graphics 750 Mhz; 16 Гб, DDR4.
Linux Mint 22 Cinnamon.

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #3 : 03 Декабря 2014, 22:28:19 »
Благодарю!

Вот только нужно, что бы исходные фото на флешке удалялись. Как?

Это ж элементарно! Вместо команды "cp" подставьте команду "mv". Кстати, объяснить ту длинную фигню надо или разберетесь, или понимать не надо, главное, что работает?
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн S.D. aka Xvost

  • Автор темы
  • Активист
  • *
  • Сообщений: 411
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #4 : 03 Декабря 2014, 22:34:10 »
Ещё раз благодарю! Сейчас главное - что б работало. А разбираться на досуге, конечно буду.
Beelink Mini S12 Pro; Intel® Alder Lake N100, 0.8 Ghz / 3.4 Ghz × 4; Intel® UHD Graphics 750 Mhz; 16 Гб, DDR4.
Linux Mint 22 Cinnamon.

Оффлайн maks05

  • Старожил
  • *
  • Сообщений: 6787
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #5 : 04 Декабря 2014, 10:28:51 »
S.D. aka Xvost,  а можно узнать, зачем нужен такой автоматический перенос? Какая-то специфическая задача, или "потому, что так хочется". Просто, в зависимости от цели могут быть и другие решения.

Да и насколько всё должно быть автоматизировано?

Оффлайн S.D. aka Xvost

  • Автор темы
  • Активист
  • *
  • Сообщений: 411
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #6 : 04 Декабря 2014, 10:39:31 »
Просто удобно. Ещё с Винды так привык - вставил флешку и одним кликом все фото перенёс в нужную папку.
Beelink Mini S12 Pro; Intel® Alder Lake N100, 0.8 Ghz / 3.4 Ghz × 4; Intel® UHD Graphics 750 Mhz; 16 Гб, DDR4.
Linux Mint 22 Cinnamon.

Оффлайн ZEPHYR

  • Любитель
  • *
  • Сообщений: 75
  • Arch Linux/i3wm
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #7 : 04 Декабря 2014, 15:56:29 »
Благодарю!

Вот только нужно, что бы исходные фото на флешке удалялись. Как?

Это ж элементарно! Вместо команды "cp" подставьте команду "mv". Кстати, объяснить ту длинную фигню надо или разберетесь, или понимать не надо, главное, что работает?
А я за то, чтобы обьяснить все-таки. Ведь мы здесь, чтобы и учиться, а не только траблы решать.
Автор благодарит алфавит за любезно предоставленные буквы.

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #8 : 04 Декабря 2014, 16:30:18 »
А я за то, чтобы обьяснить все-таки. Ведь мы здесь, чтобы и учиться, а не только траблы решать.

OK. Вот алгоритм:

find - ищет файлы
file - определяет тип файла, потому можно включить это в запуск команды find с ключом -exec
Таким образом, можем получить имя и типы всех файлов по данному пути поиска, но надо отфильтровать картинки. Потому используем такой замысловатый grep (чтобы различить тип файла от слова "Image" в имени файла)
Вывод получается такой:

find ~ -type f -exec file {} \; | grep -o -P '^.+: \w+ image'
/home/sergius/Screenshot - 11142014 - 04_44_40 PM.png: PNG image
/home/sergius/Pictures/find_house.png: PNG image
/home/sergius/Pictures/mr_Bean.png: PNG image
/home/sergius/Pictures/me.JPG: JPEG image
/home/sergius/Pictures/myzhiki.jpg: JPEG image
/home/sergius/Pictures/we are all connected.jpg: JPEG image
/home/sergius/Pictures/1351791597_choose_your_destiny_by_hobday.jpg: JPEG image

Чтобы можно было подставить файлы для копирования/перемещения, нам надо как-то вырезать отсюда чисто имена файлов.
инструкция awk '{ print $1 }' - вырезает первое поле вывода до пробела (кстати, вот здесь прокол, если у вас имена файлов с пробелами, надо ещё подумать). Остаётся ещё избавиться от двоеточия в конце. Команда cut -c 2- может убрать первый символ, потому мы используем дважды "переворачивание" - rev.

Думаю, это можно улучшить, ещё надо с пробелами разобраться.
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн ZEPHYR

  • Любитель
  • *
  • Сообщений: 75
  • Arch Linux/i3wm
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #9 : 04 Декабря 2014, 17:53:24 »
Спасибо. А что почитать посоветуете (по командам из тер.)?
Автор благодарит алфавит за любезно предоставленные буквы.

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #10 : 04 Декабря 2014, 18:06:52 »
Спасибо. А что почитать посоветуете (по командам из тер.)?

Ну, тут наверное, одним источником не обойтись. Скину пару топовых:

top commands
http://www.commandlinefu.com/commands/browse/sort-by-votes

Advanced shell scripting
http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html

Ну и такие книги, как "Linux Bible", Э. Немет "Руководство системного администратора Unix/Linux"
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #11 : 04 Декабря 2014, 18:09:33 »
Master_Sergius,
Извините, конечно, но то что у Вас получилось — наглядный пример "индусского кода". Если уж "притянули" awk, который сам по себе чуть ли не язык программирования то уже на нем и делайте:
Код: (bash) [Выделить]
cp -t "~/Picture/" $(find /media/usb_device -type f -exec file "{}" \; | awk -F : '/image/{print "\"" $1 "\""}')Хотя как на меня вполне было бы достаточно цикла на bash или sed.
ZEPHYR,
"Advanced BASH scripting guide"
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #12 : 04 Декабря 2014, 18:12:39 »
Master_Sergius,
Извините, конечно, но то что у Вас получилось — наглядный пример "индусского кода". Если уж "притянули" awk, который сам по себе чуть ли не язык программирования то уже на нем и делайте:
Код: (bash) [Выделить]
cp -t "~/Picture/" $(find /media/usb_device -type f -exec file "{}" \; | awk -F : '/image/{print "\"" $1 "\""}')Хотя как на меня вполне было бы достаточно цикла на bash или sed.
ZEPHYR,
"Advanced BASH scripting guide"

Извиняю, это просто было первое, что пришло в голову. Кстати, двоеточие тоже может быть в имени файла, значит, надо подумать ещё чутка )
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Автоматический перенос фотографий с флешки
« Ответ #13 : 04 Декабря 2014, 20:27:14 »
Код: (bash) [Выделить]
#!/bin/bash

DIR_SRC="/media/usb_device"
DIR_DST="$(xdg-user-dir PICTURES)/from_usb"

mkdir --parents "$DIR_DST"
find "$DIR_SRC" -type f | while read FILE
do
    if [[ "$(file --brief --mime-type "$FILE")" == image/* ]]
    then
        mv --interactive --verbose "$FILE" "$DIR_DST"
    fi
done

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Автоматический перенос фотографий с флешки
« Ответ #14 : 04 Декабря 2014, 21:46:29 »
Кстати, двоеточие тоже может быть в имени файла, значит, надо подумать ещё чутка )
Не может. Попробуйте назвать так что-нибудь.
это просто было первое, что пришло в голову.
Извините, но такое
Команда cut -c 2- может убрать первый символ, потому мы используем дважды "переворачивание" - rev.
в голову (или куда ещё) приходить не должно (cut -d: -f1
tr -d ':'
sed 's/.$//'
и много-много ещё вариантов).
ArcFi,
Ну так, вот примерно о чем и говорилось
« Последнее редактирование: 04 Декабря 2014, 21:48:34 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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