
He estado rascándome la cabeza con esto durante demasiado tiempo, así que tal vez alguien aquí pueda ver qué está yendo mal. Estoy intentando crear un comando para escanear desde mi escáner a un archivo con marca de tiempo en mis documentos.
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M:%S).tiff
Esto produce el errorzsh: invalid argument: 2017.05.27-14:29:13.tiff
Por extraño que parezca, al eliminar los segundos en la cadena de formato de fecha de esta manera, no se produce el error, pero el archivo tampoco tiene el nombre correcto:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M).tiff
Termino con un archivo llamado 2017.05.27-14
, al que le faltan los minutos y la extensión .tiff.
Para complicar aún más las cosas, todo esto funciona perfectamente cuando no está en un recurso compartido de samba, pero los mismos comandos en un recurso compartido de samba generan el error. Las pruebas con echo en lugar de scanimage no revelan nada interesante ya que el uso de echo hace que se comporte como se esperaba.
Respuesta1
Resulta que el problema fueron los dos puntos: dado que mi recurso compartido de samba no permite nombres de archivos con dos puntos, daría este error. Al eliminar los dos puntos de mi nombre de archivo, funciona perfectamente:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H.%M.%S).tiff
Si alguien tiene curiosidad sobre el script completo para escanear y organizar documentos, aquí lo tiene:
#!/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
Simplemente ingreso a cualquier carpeta (recibos, información médica, etc.) y ejecuto el archivo de escaneo. El resultado es un pdf con marca de tiempo de todas las páginas escaneadas en el directorio actual.