
Estou coçando a cabeça com isso há muito tempo, então talvez alguém aqui consiga ver o que está errado. Estou tentando criar um comando para digitalizar do meu scanner para um arquivo com carimbo de data/hora em meus documentos.
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M:%S).tiff
Isso produz o errozsh: invalid argument: 2017.05.27-14:29:13.tiff
Curiosamente, removendo os segundos na string de formato de data dessa forma, o erro não ocorre, mas o arquivo também não é nomeado corretamente:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M).tiff
Acabo com um arquivo chamado 2017.05.27-14
, faltando os minutos e a extensão .tiff.
Para complicar ainda mais as coisas, tudo isso funciona perfeitamente quando não está em um compartilhamento de samba, mas os mesmos comandos em um compartilhamento de samba geram o erro. Testar com echo em vez de scanimage não revela nada de interessante, pois usar echo faz com que ele se comporte conforme o esperado.
Responder1
Acontece que o problema foram os dois pontos - como meu compartilhamento de samba não permite nomes de arquivos com dois pontos, ocorreria esse erro. Remover os dois pontos do meu nome de arquivo faz com que ele funcione perfeitamente:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H.%M.%S).tiff
Caso alguém tenha curiosidade sobre o roteiro completo para digitalização e organização de documentos, aqui está:
#!/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
Eu apenas cd em qualquer pasta (recibos, médicos, etc) e executo o scanfile. O resultado é um PDF com carimbo de data e hora de todas as páginas digitalizadas no diretório atual.