#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