
Ich habe mir schon zu lange den Kopf darüber zerbrochen, vielleicht kann hier jemand herausfinden, was schief läuft. Ich versuche, einen Befehl zu erstellen, um von meinem Scanner in eine mit einem Zeitstempel versehene Datei in meinen Dokumenten zu scannen.
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M:%S).tiff
Dies erzeugt den Fehlerzsh: invalid argument: 2017.05.27-14:29:13.tiff
Kurioserweise tritt der Fehler nicht auf, wenn man die Sekunden aus der Datumsformatzeichenfolge wie folgt entfernt, aber die Datei wird auch nicht richtig benannt:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M).tiff
Am Ende erhalte ich eine Datei mit dem Namen 2017.05.27-14
, in der die Minuten und die Erweiterung .tiff fehlen.
Um die Sache noch komplizierter zu machen, funktioniert das alles perfekt, wenn es sich nicht um eine Samba-Freigabe handelt, aber die gleichen Befehle in einer Samba-Freigabe führen zum Fehler. Tests mit Echo statt Scanimage ergeben nichts Interessantes, da die Verwendung von Echo dazu führt, dass es sich wie erwartet verhält.
Antwort1
Das Problem waren offenbar die Doppelpunkte. Da meine Samba-Freigabe keine Dateinamen mit Doppelpunkten zulässt, tritt dieser Fehler auf. Wenn ich die Doppelpunkte aus meinem Dateinamen entferne, funktioniert es einwandfrei:
scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H.%M.%S).tiff
Falls jemand neugierig auf das fertige Skript zum Scannen und Organisieren von Dokumenten ist, hier ist es:
#!/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
Ich wechsle einfach in einen beliebigen Ordner (Quittungen, medizinische Dokumente usw.) und führe scanfile aus. Das Ergebnis ist eine mit Zeitstempel versehene PDF-Datei aller im aktuellen Verzeichnis gescannten Seiten.