2016-10-13 14 views
0

Использование zsh 5.2 на рабочей станции Fedora 24.Переместить файл, изменить разрешения и переименовать его, сохраняя одинаковое расширение

Я хочу быть программно в состоянии:

  • переместить файл изображения (может иметь расширения JPG/JPEG/PNG/JPG/PNG) из/TMP/folder1 в ~/Pictures
  • Это файл будет иметь то же несколько начальных символов, --- prefix111.jpg ИЛИ prefix222.png и т.д.
  • переименовать файл таким образом, что samefilename.JPG становится 20161013.jpg
  • 20161013 является текущая дата в формате ГГГГММДД
  • Обратите внимание, что расширение становится строчными буквами
  • И JPEG или JPEG становится JPG
  • изменить права перемещенного файла в 644

Все на одном дыхании.

Если имеется несколько префиксных * файлов, команда должна просто терпеть неудачу.

Сначала я хотел бы сделать это в командной строке с возможностью добавления задания cron позже. Я имею в виду, будет ли та же самая команда zsh/script работать в cron?

Уверен, это выполнимо. Тем не менее, с моими ограниченными знаниями об оболочке, можно было достичь только:

mv /tmp/folder1/prefix-*.JPG ~/Pictures/$(date +'%Y%m%d').jpg 

Проблем с моим подходом много. Он не обрабатывает капитализацию, не заботится о разных расширениях и не рассматривает проблему разрешения.

ответ

1

Как об этом:

#!/bin/sh 
FILES="/tmp/folder1/prefix*.jpg /tmp/folder1/prefix*.jpeg /tmp/folder1/prefix*.png h/tmp/folder1/prefix*.JPG /tmp/folder1/prefix*.PNG" 
if [ $(ls $FILES | wc -l) -gt 1 ]; then 
    exit 1 
fi 
if [ $(ls $FILES | grep -i '\.png$') ]; then 
    SUFF=png 
else 
    SUFF=jpg 
fi 
DEST=$HOME/Pictures/$(date +'%Y%m%d').$SUFF 
mv $FILES $DEST 
chmod 644 $DEST