Переместить файл, изменить разрешения и переименовать его с сохранением того же расширения

#permissions #cron #zsh #rsync #mv

#разрешения #cron #zsh #rsync #mv

Вопрос:

Использование zsh 5.2 на рабочей станции Fedora 24.

Я хочу иметь программную возможность:

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

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

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

Сначала я хотел бы сделать это в командной строке с возможностью добавления задания cron позже. Я имею в виду, будет ли одна и та же команда / скрипт zsh работать в 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