Comments 17
ls -l /dev/disk/by-id/ lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-Hitachi_HDS5C3030ALA630_MJ1311YNG5H6EA -> ../../sdd lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-Hitachi_HDS723030ALA640_MK0311YHG46TNA -> ../../sdg lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-Hitachi_HDS723030ALA640_MK0311YHG46TNA-part1 -> ../../sdg1 lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-INTEL_SSDSA2CT040G3_CVPR113101TB040AGN -> ../../sde lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-INTEL_SSDSA2CT040G3_CVPR113101TB040AGN-part1 -> ../../sde1 lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-SAMSUNG_HD204UI_S2H7J1SZ910745 -> ../../sdf lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-SAMSUNG_HD204UI_S2H7J1SZ910745-part1 -> ../../sdf1 lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-ST31500541AS_5XW035A8 -> ../../sdh lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-ST31500541AS_5XW035A8-part1 -> ../../sdh1 lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-WDC_WD1500HLFS-01G6U1_WD-WXC0CA9S7468 -> ../../sda lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-WDC_WD1500HLFS-01G6U1_WD-WXC0CA9S7468-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-WDC_WD1500HLFS-01G6U1_WD-WXC0CA9S7468-part2 -> ../../sda2 lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-WDC_WD15EARS-00S8B1_WD-WCAVY3586255 -> ../../sdi lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-WDC_WD15EARS-00S8B1_WD-WCAVY3586255-part1 -> ../../sdi1 lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-WDC_WD2003FYYS-02W0B1_WD-WCAY00134250 -> ../../sdb lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-WDC_WD2003FYYS-02W0B1_WD-WCAY00134250-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 Ноя 10 04:04 ata-WDC_WD20EARS-00MVWB0_WD-WMAZ20249517 -> ../../sdc lrwxrwxrwx 1 root root 10 Ноя 10 04:04 ata-WDC_WD20EARS-00MVWB0_WD-WMAZ20249517-part1 -> ../../sdc1
+7
lrwxrwxrwx 1 root root 9 нояб. 16 00:21 usb-Generic-_Compact_Flash_20060413092100000-0:0 -> ../../sdf
lrwxrwxrwx 1 root root 9 нояб. 16 00:21 usb-Generic-_MS_MS-Pro_20060413092100000-0:3 -> ../../sdi
lrwxrwxrwx 1 root root 9 нояб. 16 00:21 usb-Generic-_SD_MMC_20060413092100000-0:2 -> ../../sdh
lrwxrwxrwx 1 root root 9 нояб. 16 00:21 usb-Generic-_SM_xD-Picture_20060413092100000-0:1 -> ../../sdg
Ага, спасибо.
lrwxrwxrwx 1 root root 9 нояб. 16 00:21 usb-Generic-_MS_MS-Pro_20060413092100000-0:3 -> ../../sdi
lrwxrwxrwx 1 root root 9 нояб. 16 00:21 usb-Generic-_SD_MMC_20060413092100000-0:2 -> ../../sdh
lrwxrwxrwx 1 root root 9 нояб. 16 00:21 usb-Generic-_SM_xD-Picture_20060413092100000-0:1 -> ../../sdg
Ага, спасибо.
0
Я для себя тупо делал проверку папки DCIM в корне флешки, и не важно, что и куда оно вставлено. Если есть такая папка (вроде по стандарту для цифровых камер положено), то значит можно копировать.
+1
Чо-то как-то название статьи не соответствует содержимому… скрипт на bash — разве не набор команд командной строки?
0
Не совсем. Скрипт — это скрипт! А насчет «удобных средств» я своей жене сделал на bash-е «скриптовое средство» от которого она в полном восторге: есть папка на рабочем столе и есть рядом скрипт автоматического ужимания фоток: 1) закидывает она в папку любые фотки 2) кликает на скрипт 3) через несколько секунд/минут можно юзать «готовые для web» фотки.
Делюсь:
NB: /home/valya/Desktop/fotoz_2_small замените на свой путь к папке, само собой!
Делюсь:
#!/bin/sh
#make_small.sh
#########
cd /home/valya/Desktop/fotoz_2_small || exit 1
mkdir -p 800x600
for f in *.[Jj][pP][gG] *.[gG][iI][fF] *.[pP][nN][gG] ; do
if [ ! -f "800x600/${f}" ] ; then
convert "${f}" -resize 800x800 "800x600/${f}"
fi
done
NB: /home/valya/Desktop/fotoz_2_small замените на свой путь к папке, само собой!
0
А если бы вы слышали про inotify, то даже кликать не приходилось бы :)
+1
Хм, я для этой цели обычно плагин к наутилусу использую — nautilus-image-converter, тоже довольно удобно, выбрал фотки, нажал на нужную опцию и наслаждайся полетом
ubuntugenius.wordpress.com/2010/05/23/easy-picture-resize-rotate-in-ubuntu-with-nautilus-image-converter/
ubuntugenius.wordpress.com/2010/05/23/easy-picture-resize-rotate-in-ubuntu-with-nautilus-image-converter/
0
В прошлогодней статье предлагалось каждый раз пользоваться командной строкой, а тут один раз написал и забыл.
0
А через год забыл, что писал, как писал, и как оно вообще работает. А оно всё работает!
Вот так линукс расслабляет :)
Вот так линукс расслабляет :)
+1
1. нотификация —
не уверен, но в KDE наверное можно использовать kdialog
2. создать файл myapp.cfg с содержимым — key=«value»
3. очень странно, не видел никаких ограничений на врем выполнения скрипта udev'ом, скорей всего скрипт на чем то спотыкается и не может завершиться, попробуйте в начале скрипта поставить set -x и ход выполнения сбросить в лог RUN+="/root/bin/PhotoSort.sh %k >> /tmp/PhotoSort.log"
4. я организовал определение флэшки через UUID ее раздела, определить можно через blkid, и если это наша флешка, то что-то делаем с ней
5. использовать UUID
6.…
7. зачем?
$ export DISPLAY=:0.0
$ mv /from/file /to/file && notify-send 'Move succeed' || notify-send 'Move failed'
не уверен, но в KDE наверное можно использовать kdialog
2. создать файл myapp.cfg с содержимым — key=«value»
$ source myapp.cfg
$ echo key
value
3. очень странно, не видел никаких ограничений на врем выполнения скрипта udev'ом, скорей всего скрипт на чем то спотыкается и не может завершиться, попробуйте в начале скрипта поставить set -x и ход выполнения сбросить в лог RUN+="/root/bin/PhotoSort.sh %k >> /tmp/PhotoSort.log"
4. я организовал определение флэшки через UUID ее раздела, определить можно через blkid, и если это наша флешка, то что-то делаем с ней
5. использовать UUID
6.…
7. зачем?
0
1. Нотификации я добился. notify-send, наверно, в KDE не работает совсем. А xmessage и kdialog работают. Теперь другая напасть: скрипт ожидает ответа от kdialog.
Судя по инструкции (шикарная, кстати) данная команда должна была отобразить в области уведомлений окно и через 10 секунд скрыться. Так оно и происходит, если запускать от своего имени (почти так, первое сообщение не показывается, только раздражает иконку информации, а на второй раз — открывает окошко, поэтому там два сообщения: старое и новое), но как только запускаешь от root'а как я выше привёл, то окно совершенно другого вида посередь экрана (верхнее окно) и скрипт останавливается и ждёт пока не кликнешь в это окошко или таймер не закончится:
2. Спасибо, как-нить займусь этим.
3. А вот не работает. Как я понял перенаправлять надо stderr, а значит надо было писать RUN+="/root/bin/PhotoSort.sh %k 2>> /tmp/file", но это всё равно не помогает — не пишет он ничего и даже файл не пытается создать. Как я понимаю, это из-за того, что скрипт получает такую строку: sdh1 2>> /tmp/file и перенаправления потоков не происходит.
Зато пока я экспериментировал с kdialog я проверил что выполняется он точно 60 секунд (выставив таймер на 70 секунд), а потом управление захватывает KDE. Я поставил echo «kdialog» >> /tmp/file сразу после вызова этого kdialog и ничего не получил в этом файле. Т.е. после того, как прошло 70 секунд и управление должно было вернуться в скрипт, там нас никто не ждал.
4. Про UUID спасибо, что-то мысль такая мелькнула, но не задержалась в голове. Это не избавляет нас от лишних движений по регистрации карты памяти (ну или в моём случае — создание файла в корне).
7. Из-за этого и появился файл в корне флешки, как индикатор того, что надо что-то делать. А так жмёшь кнопу, вставляешь флешку и она копируется, не жмёшь — не копируется. У меня тут раздвоение личности: хочется и с произвольной флешки скопировать, а с другой стороны — оно мне надо с произвольной-то?
Судя по инструкции (шикарная, кстати) данная команда должна была отобразить в области уведомлений окно и через 10 секунд скрыться. Так оно и происходит, если запускать от своего имени (почти так, первое сообщение не показывается, только раздражает иконку информации, а на второй раз — открывает окошко, поэтому там два сообщения: старое и новое), но как только запускаешь от root'а как я выше привёл, то окно совершенно другого вида посередь экрана (верхнее окно) и скрипт останавливается и ждёт пока не кликнешь в это окошко или таймер не закончится:
2. Спасибо, как-нить займусь этим.
3. А вот не работает. Как я понял перенаправлять надо stderr, а значит надо было писать RUN+="/root/bin/PhotoSort.sh %k 2>> /tmp/file", но это всё равно не помогает — не пишет он ничего и даже файл не пытается создать. Как я понимаю, это из-за того, что скрипт получает такую строку: sdh1 2>> /tmp/file и перенаправления потоков не происходит.
Зато пока я экспериментировал с kdialog я проверил что выполняется он точно 60 секунд (выставив таймер на 70 секунд), а потом управление захватывает KDE. Я поставил echo «kdialog» >> /tmp/file сразу после вызова этого kdialog и ничего не получил в этом файле. Т.е. после того, как прошло 70 секунд и управление должно было вернуться в скрипт, там нас никто не ждал.
4. Про UUID спасибо, что-то мысль такая мелькнула, но не задержалась в голове. Это не избавляет нас от лишних движений по регистрации карты памяти (ну или в моём случае — создание файла в корне).
7. Из-за этого и появился файл в корне флешки, как индикатор того, что надо что-то делать. А так жмёшь кнопу, вставляешь флешку и она копируется, не жмёшь — не копируется. У меня тут раздвоение личности: хочется и с произвольной флешки скопировать, а с другой стороны — оно мне надо с произвольной-то?
0
Опять же, возможно существует более элегантное решение.
Вы правы, существует. Воспользуйтесь exiv2.
Она позволяет простенько считывать, редактировать, удалять и пр. действия с мета-информацией exif.
В том числе у неё есть команда rename, которая переменовывает файлы, основываясь на Exif.Photo.DateTimeOriginal или (при отсутствии) — на Exif.Image.DateTime в соответствии с форматом, который вы укажите в ключе '-r' (который аналогичен стандартному формату strftime). По умолчанию формат %Y%m%d_%H%M%S, что меня вполне устраивает, так что ключём даже не пользуюсь.
Итак, шелл-функция из моей библиотеки скриптов для переименовывания файлов на основе их exif данных такая:
# sort photos by exif date
# $* - filenames to rename
# example: exif_date_sort ./* # sort all files in directory
# author: japdoll, 2008
exif_date_sort()
{
until [ -z "$1" ]
do
exiv2 rename -- "./$1"
shift
done
return 0
}
0
Sign up to leave a comment.
Командную строку фотографа-линуксоида — на пенсию!