Скрипт для раскидывания фоток и видео по подкаталогам с датой из EXIF

 
+
-
edit
 

Balancer

администратор
★★★★☆
Linux компьютеры
Решил тут поделиться по случаю. Скрипт наколенный и для себя, так что не обессудьте.

Берёт и из текущего каталога раскидывает всё в каталоги по датам. Предварительно переименовывает всё в нижний регистр, вращает фотки, что нужно повернуть, меняет юзера. Настройки все hardcoded :)


code text
  1. #!/bin/bash
  2.  
  3. sudo chown balancer: *
  4.  
  5. chmod a-x,go-w *
  6. for i in *.MOV *.JPG *.AVI *.THM; do
  7.         if [[ -s $i ]]; then
  8.                 mv -i "$i" "$(echo $i | tr [:upper:] [:lower:])"
  9.         fi
  10. done
  11.  
  12. exifautotran *.jpg
  13.  
  14. find -iname '*.jpg' -o -iname '*.cr2' | while read PIC; do
  15.         echo -n $PIC --
  16.         DATE=$(exiftool -p '$DateTimeOriginal' "$PIC")
  17.         DATE_STAMP=$(php -r "echo date('YmdHi.s', strtotime('$DATE'));")
  18.         DATE_DIR=$(php -r "echo date('/Y/md/', strtotime('$DATE')-4*3600);")
  19.         touch -t $DATE_STAMP "$PIC"
  20.         DIR=/home/family/Our/Unsorted$DATE_DIR
  21.         mkdir -p "$DIR"
  22.         mv -i "$PIC" $DIR/ || exit
  23.         echo " $DATE has moved to $DIR"
  24. done
  25.  
  26. find -iname '*.mov' | while read AVI; do
  27.         PIC=$(basename "$AVI" .mov).thm
  28.         if [[ -s "$PIC" && -s "$AVI" ]]; then
  29.                 echo -n $PIC --
  30.                 DATE=$(exiftool -p '$DateTimeOriginal' "$PIC")
  31.                 DATE_STAMP=$(php -r "echo date('YmdHi.s', strtotime('$DATE'));")
  32.                 DATE_DIR=$(php -r "echo date('/Y/md/', strtotime('$DATE')-4*3600);")
  33.                 touch -t $DATE_STAMP "$PIC"
  34.                 touch -t $DATE_STAMP "$AVI"
  35.                 DIR=/home/family/Our/Unsorted$DATE_DIR
  36.                 mkdir -p "$DIR"
  37.                 mv -i "$PIC" $DIR/ || exit
  38.                 mv -i "$AVI" $DIR/ || exit
  39.                 echo " $DATE has moved to $DIR"
  40.         fi
  41. done
  42.  
  43. find -iname '*.avi' | while read AVI; do
  44.         PIC=$(basename "$AVI" .avi).thm
  45.         if [[ -s "$PIC" && -s "$AVI" ]]; then
  46.                 echo -n $PIC --
  47.                 DATE=$(exiftool -p '$DateTimeOriginal' "$PIC")
  48.                 DATE_STAMP=$(php -r "echo date('YmdHi.s', strtotime('$DATE'));")
  49.                 DATE_DIR=$(php -r "echo date('/Y/md/', strtotime('$DATE')-4*3600);")
  50.                 touch -t $DATE_STAMP "$PIC"
  51.                 touch -t $DATE_STAMP "$AVI"
  52.                 DIR=/home/family/Our/Unsorted$DATE_DIR
  53.                 mkdir -p "$DIR"
  54.                 mv -i "$PIC" $DIR/ || exit
  55.                 mv -i "$AVI" $DIR/ || exit
  56.                 echo " $DATE has moved to $DIR"
  57.         fi
  58. done
 3.6.33.6.3

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru