
Я слишком долго ломал голову над этим, так что, возможно, кто-то здесь сможет увидеть, что не так. Я пытаюсь создать команду для сканирования со сканера в файл с временной меткой в моих документах.
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M:%S).tiff
Это приводит к ошибкеzsh: invalid argument: 2017.05.27-14:29:13.tiff
Как ни странно, если удалить секунды в строке формата даты, вот так, ошибка не возникает, но и файл не называется правильно:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M).tiff
В итоге у меня получается файл с именем 2017.05.27-14
, в котором отсутствуют минуты и расширение .tiff.
Чтобы еще больше все усложнить, все это работает отлично, когда не в общем ресурсе samba, но те же команды в общем ресурсе samba вызывают ошибку. Тестирование с echo вместо scanimage не выявило ничего интересного, так как использование echo заставляет его вести себя так, как и ожидалось.
решение1
Проблема оказалась в двоеточиях - поскольку мой общий ресурс samba не допускает имена файлов с двоеточиями, он выдавал эту ошибку. Удаление двоеточий из имени файла приводит к тому, что все работает отлично:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H.%M.%S).tiff
Если кому-то интересен готовый скрипт для сканирования и организации документов, вот он:
#!/bin/bash
finish="-1"
page=1
date=$(date +%Y.%m.%d-%H.%M.%S)
while [ "$finish" = '-1' ]; do
echo -e "\e[1m\e[32m==>\e[0m Scanning page $page..."
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $date-$page.tiff
while true; do
echo -en " \e[1m\e[34m->\e[0m More pages? [y/n] "
read answer
case $answer in
[Yy]* ) page=$((page+1)); break;;
[Nn]* ) finish="1"; break;;
* ) echo -e " \e[1m\e[34m->\e[0m Please answer tes or no.";;
esac
done
done
echo -e "\e[1m\e[32m==>\e[0m Converting $page page(s) to PDF..."
convert $date-*.tiff $date.pdf
echo -e "\e[1m\e[32m==>\e[0m Cleaning up..."
rm $date-*.tiff
Я просто перехожу в любую папку (чеки, медицинские и т. д.) и запускаю scanfile. Результат — pdf-файл с временной меткой всех страниц, отсканированных в текущем каталоге.