PDF an Hand des hinterlegten barcodes umbenennen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 02.04.2022 16:53:25

Fall 1) Wir haben in der Regel den Barcode als Text per pdftotxt und magischen RegEx-Dingern.

Fall 2) Wir haben den Barcode für Sonderfälle per pdttoppm und zlib.

Es hängt jetzt an der Weiterverarbeitung.
In ein Verzeichnis werden die PDF hineingespielt (entweder per PDF-Erzeugung aus Thera-Pi heraus -> Fall 1) oder von nem scanner, per Hand oder sonstwie (Fall 2).

Jetzt soll das Ursprungs-PDF umbenannt werden mit dem Text aus dem Barcode und in ein anderes Verzeichnis kopiert/verschoben werden.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 03.04.2022 10:40:39

Ich würde jetzt erstmal so weitermachen, den gefundenen String zu zerlegen (kannst statt dem grep auch gerne die Variante mit zbar stattdessen nehmen), script.sh:

Code: Alles auswählen

DATEI=$1
DATEINAME=`grep "^\*20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.*\*$" $DATEI| head -1`
OLDIFS=$IFS
IFS='_-*'
arr=($DATEINAME)
Y=${arr[1]}
M=${arr[2]}
D=${arr[3]}
echo $Y " " $M " " $D
# hier noch auf plausibilität prüfen
# hier dann das verschieben
IFS=$OLDIFS
ausführbarmachen, gegebenfalls dem richtigem Userberechtigungen geben. Wäre vielleicht sinnvoll, hier nen eigenen User fürs Verschieben anzulegen, der nirgendwo anders Schreibrechte hat, dann kann nicht viel schiefgehen, falls mal mit den RegEchsen/zbar was schiefgeht.

Code: Alles auswählen

./script.sh  /tmp/testpdftext.txt 
Dann den Teil mit inotify angehen. Ich müsste die Doku da auch erst selbst lesen. Relevant wäre zu wissen, ob/wie man inotify das script gibt, und ob(wie) es in der Lage ist, den Namen der gefundenen Datei an das Script zu übergeben.

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 04.04.2022 15:47:24

Das scheint so noch nicht zu funktionieren.
Edit: Es scheint teilweise zu funktionieren.....
Die Datumswerte werden ausgegeben. Sonst passiert anscheinend nichts.

Code: Alles auswählen

./script.sh  3.txt   

2022   04   01
Ich bin auch zu unwissend, den Fehler einzugrenzen.

Code: Alles auswählen

DATEI=$1
hier wird eine Variable festgelegt?

Code: Alles auswählen

DATEINAME=`grep "^\*20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.*\*$" $DATEI| head -1`
Es wird in DATEI nach den strings gesucht? 20y y-m m -d d_
Aber ist das nicht zu wenig? Müsste nicht "Pauschal" alles zwischen den Sternchen gesucht werden? Ohne weitere Behandlung?

Code: Alles auswählen

OLDIFS=$IFS
IFS='_-*'
?

Code: Alles auswählen

arr=($DATEINAME)
Y=${arr[1]}
M=${arr[2]}
D=${arr[3]}
Es wird ein array gebildet aus den Angaben Jahr, Monat und Tag

Code: Alles auswählen

echo $Y " " $M " " $D
das array (der Dateiname???) wird ausgegeben?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 04.04.2022 16:44:58

letzter3 hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 15:47:24
Das scheint so noch nicht zu funktionieren.
Edit: Es scheint teilweise zu funktionieren.....
Die Datumswerte werden ausgegeben. Sonst passiert anscheinend nichts.
Mehr sollte auch nicht passieren.
Wenn das bei Dir funktioniert, dann kann man die $D $M $Y Variablen im Script weiternutzen, um den Verschiebebefehl damit zu füttern.

Aber:
Ein Problem, dass man nicht vernachlässigen darf, ist dass bei Eingabe von unerwarteten Sachen komplett andere Ausgaben erzeugt werden. Und dann schiebt so ein Script, Dateien an Stellen, wo sie besser nicht landen sollten. Oder überschreibt Sachen, die es nicht überschreiben sollte, etc.
Deswegen muss man sicherstellen, dass das Script nur mit den richtigen Sachen aufgerufen wird. Ich hab da nen ungutes Gefühl, Dir zu sagen "schreib jetzt einfach mv -n $Dateiname ziel/$D-$M-$Y_warmal_$Dateiname.pdf in die vorletzte Zeile", ohne das richtig zu machen.
Aber für "richtig" hab ich zu wenig Erfahrung, was inotify/bash hier alles falsches machen könnten.

@Mitlesende:
Ich würde sagen $D $Y $M darauf testen, dass die nicht leer sind und immer nur Zahlen enthalten? Mag mal jemand aufschreiben, wie das in bash am sinnvollsten aussähe? mv würde ich in dem Fall vorsichtshalber mit -n versehen. Keine Ahnung, wie inotify damit umgeht, dass es nen Zugriff auf die Datei gab (potentielle Endloschleife?) ...

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 04.04.2022 17:27:20

Ahh, okay.
Aber machen wir uns hier die Sache nicht unnötig kompliziert?
Alles zwischen den Sternchen soll der neue Dateiname werden.
*2022-04-01_20123990*
Die neue Datei soll also 2022-04-01_20123990.pdf heissen.
Warum werden dann erstmal YYYY MM DD herausgepickt und nachher wieder zusammen gesetzt?
Sternchen kommen sonst innerhalb des Dokumentes nicht vor.
Ggf. kann noch darauf geprüft werden, ob vor dem _ ein Datum in der erwarteten Form ist. Nach dem _ sind verschiedene Muster möglich.

Ob es inotify oder cron wird, ist mir fast egal.
Vielleicht auch erstmal nur kopieren anstatt verschieben. Wobei dann die schon mal angefassten erneut umbenannt werden (oder auch nicht, je nachdem ob das erlaubt ist oder nicht)
Das Aufkommen an Dokumenten geht von 0/Tag über 1/Stunde bis zu 20/5min

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von Meillo » 04.04.2022 17:32:53

letzter3 hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 17:27:20
Alles zwischen den Sternchen soll der neue Dateiname werden.
*2022-04-01_20123990*
Die neue Datei soll also 2022-04-01_20123990.pdf heissen.
Dann schlage ich mal folgendes vor:

Code: Alles auswählen

DATEINAME=`sed -n '/^\*20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]*\*$/ {s/\*//g;p;q;}' "$DATEI"`.pdf
Use ed once in a while!

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 04.04.2022 18:08:57

Kann mir jemand erklären, warum dies gemacht wird?
20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]
Geht nicht sowas wie "Nimm die Zeichen zwischen den beiden Sternchen."

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von Meillo » 04.04.2022 18:13:23

letzter3 hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 18:08:57
Kann mir jemand erklären, warum dies gemacht wird?
20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]
Geht nicht sowas wie "Nimm die Zeichen zwischen den beiden Sternchen."
Natuerlich geht auch das ... nur koennte das auch auf sonstige Zeilen zutreffen, falls im Fliesstext zufaellig mal irgendwo eine Zeile mit einem Stern beginnt und aufhoert. Darum versucht man normalerweise die Angaben so eng wie moeglich zu fassen.

Wobei in dem Fall hier immerhin nach dem ersten Fund schon abgebrochen wird, so dass der weiter untern stehende Fliesstext nicht mehr beruecksichtigt wird.

Aber hier hast du die Holzhammervariante: ;-)

Code: Alles auswählen

DATEINAME=`sed -n '/^\*..*\*$/ {s/\*//g;p;q;}' "$DATEI"`.pdf
Use ed once in a while!

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 04.04.2022 18:36:23

All den RegEchsen da ist gemein, dass nen 13ter Monat sein darf ... für Gehaltszahlungen natürlich nett, bei allem anderen nuja.

Code: Alles auswählen

#!/bin/bash
DATEI=$1
DATEINAME=`grep "^\*20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.*\*$" $DATEI| head -1`
OLDIFS=$IFS
IFS='_-*'
arr=($DATEINAME)
Y=${arr[1]}
M=${arr[2]}
D=${arr[3]}
echo $Y " " $M " " $D

# hier noch auf plausibilität prüfen
#
# ....

# dann das verschieben 
# echo rausnehmen, wenn es so aussieht, als sei es das, was es werden soll
# ich halte es ohne pruefung aber fuer ungut
echo mv -n ${DATEI} /dahin/${Y}-${M}-${D}_${DATEI}.pdf

IFS=$OLDIFS
@bashfreunde: spricht (abgesehn davon, dass es schlimmes Chaos geben kann,} hier was gegen ${}?
Und mit Pfaden im übergebenen Dateinamen kommt das so auch noch nicht klar, da gabs doch von den built-in-bash Funktionen was für "nur den Dateinamenteil ohne Pfadrest", ich komm grad nicht auf den Namen, wie hieß das nochmal? Nicht Basepath, so ähnlich ...
oder muss man da wieder mit IFS und letzter arraypart rumtricksen?
Ich merk immer wieder, bashscripts sind nen einziger Krampf. awk und c++ sind so viel angenehmer

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von JTH » 04.04.2022 18:53:52

eggy hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 18:36:23
@bashfreunde
Huhu :)

eggy hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 18:36:23
spricht (abgesehn davon, dass es schlimmes Chaos geben kann,} hier was gegen ${}?
Spricht nichts dagegen, nein. Es ist, so wie von dir hier benutzt, an allen außer einer Stelle (und den Arrayzugriffen natürlich) aber auch kein funktionaler Unterschied (höchstens für die Lesbarkeit) zu einem „nackten“ $var. Nur beim ${D}_ braucht man die {}, da $D_ auch gültig wäre und die Variable D_ ansprechen würde.

eggy hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 18:36:23
Und mit Pfaden im übergebenen Dateinamen kommt das so auch noch nicht klar, da gabs doch von den built-in-bash Funktionen was für "nur den Dateinamenteil ohne Pfadrest", ich komm grad nicht auf den Namen, wie hieß das nochmal?
Es gibt keine explizite Funktion dafür. Man kann basename, dirname und co. allerdings mit Parameterexpansion ganz leicht nachbilden. Beispiel:

Code: Alles auswählen

~$ my_basename() { echo "${1##*/}"; }
~$ my_basename /foo/bar/baz.txt
baz.txt

Ich schau mal gerade weiter, was ich hier noch so beitragen kann :)
Manchmal bekannt als Just (another) Terminal Hacker.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 04.04.2022 19:12:13

Danke. basename wars

Code: Alles auswählen

$ basename /tmp/testdaten.txt.pdf
testdaten.txt.pdf
gehört zu den coreutils ... wie sollte es anders sein :roll:

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von JTH » 04.04.2022 20:25:35

eggy hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 19:12:13
Danke. basename wars
Ah, dann hatte ich auch nicht ganz richtig gelesen. Ich meinte, du kamst nicht auf eine reine Shell-„Implementierung“ für basename.

Ich hab mal geschaut, eure Ansätze zum Umbenennen zusammenzutragen. Hoffe, das nimmt nix vorweg oder geht am Ziel vorbei:

Code: Alles auswählen

#!/bin/bash
set -eu -o pipefail

destname_pdftotext()
{
	pdftotext "$1" - | grep -m1 "^\*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.*\*$" | tr -d '*'
}

destname_zbarimg()
{
	zbarimg -q -Sdisable -Scode39.enable <(pdftoppm -png -singlefile "$1")  | cut -d: -f2-  | tr ' ' _
}

: "${method:=zbarimg}"
srcfile=$1
destdir=${2:-/default/destination/dir}
destname=$("destname_$method" "$srcfile").pdf

echo "Would move '$(realpath "$srcfile")' to '${destdir%/}/${destname}'"
#mv -nv -- "$srcfile" "${destdir%/}/${destname}"
Faulerweise tatsächlich als Bash-Skript – zbarimg kann nicht von stdin lesen und <(pdftoppm …) ging schneller, als ein Tempdir anlegen und aufräumen. Zum Scharfschalten ist die letzte Zeile. Durch die set-Zeile sollt das einigermaßen sicher sein, nix ungewolltest zu tun, wenn das Barcode-Erkennen fehlschlägt.

Aufzurufen mit PDF-Datei und – wenn gewünscht optional – dem Zielordner:

Code: Alles auswählen

~$ rename_from_barcode foobar.pdf /some/where/else
Would move '/here/foobar.pdf' to '/some/where/else/2022-03-24_20123988.pdf'
Zum Experimentieren oder so könnt man die andere Methode auswählen:

Code: Alles auswählen

~$ method=pdftotext rename_from_barcode foobar.pdf /some/where/else

Wenn das so manuell tut, was es soll, könnt man gucken, es um inotifywait -e close_write oder so zu erweitern oder das in einem separaten Skript benutzen, um dieses hier aufzurufen.
Zuletzt geändert von JTH am 14.04.2022 21:35:02, insgesamt 1-mal geändert.
Grund: ` | tr ' ' _` bei destname_zbarimg() ergänzt
Manchmal bekannt als Just (another) Terminal Hacker.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 04.04.2022 20:42:04

Offtopic:
JTH hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 20:25:35
Ah, dann hatte ich auch nicht ganz richtig gelesen. Ich meinte, du kamst nicht auf eine reine Shell-„Implementierung“ für basename.
Ich dachte auch erst, dass das ne bash Sache wäre.
Nur such da mal in dieser Endlosmanpage nach was, von dem du den Namen nicht kennst :twisted:.
Dass das in coreutils steckt, hab ich dann auch erst durch Dein Posting mit "base<tab>" ui ... mal "basetab /irgendwas/mit/pfad/ausprobieren" uiui ... "whereis basename", "apt-file search bin/basename" detektiviert. Also nochmal Danke für Gedächnis anstubsen.
Ich mach um umfangreichere Shellscripte normalerweise einen so weiten Bogen wie nur irgend möglich ... awk, make, notfalls auch Python ... alles, aber bitte nichts, bei dem ich mehr Zeit in die Besonderheiten der Syntax als in das eigentliche Problem investieren muss.
(hatte auch angenommen/gehofft, dass einer der üblichen Verdächtigen den Ball aufnimmt und die eingangs skizzierten Ideen in fertigen Code verwandelt :mrgreen: :THX: )

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von JTH » 05.04.2022 12:54:26

eggy hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 20:42:04
Dass das in coreutils steckt, […]
Da stecken sicher noch so einige weniger bekannte Helferlein drin, bei denen es sich lohnen würde, die mal kennen zu lernen. Hast du nach dem RegEx-Kurs schon was vor, Meillo? :wink:
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von Meillo » 05.04.2022 13:07:04

JTH hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 12:54:26
eggy hat geschrieben: ↑ zum Beitrag ↑
04.04.2022 20:42:04
Dass das in coreutils steckt, […]
Da stecken sicher noch so einige weniger bekannte Helferlein drin, bei denen es sich lohnen würde, die mal kennen zu lernen. Hast du nach dem RegEx-Kurs schon was vor, Meillo? :wink:
Jetzt habe ich ja gerade erst damit begonnen! 8O Ich gehe davon aus, dass der sich schon ein paar Wochen hinziehen wird. Und da sprichst du schon vom naechsten Projekt!? ;-)

Nichts desto trotz, muss ich sagen, dass mir der RE-Kurs jetzt schon gefaellt. Wie auch schon beim Alias-Adventskalender mag ich die laengerdauernde gemeinsame Aktion daran. Das, finde ich, bereichert unser Forum in einer zusaetzlichen Weise. Ich haette also nichts dagegen, sowas oefters/regelmaessig zu machen. Fuer die Coreutils speziell bin ich aber nicht unbedingt die beste Ansprechperson, insbesondere nicht fuer die GNU Coreutils. Ich koennte halt ein paar POSIX Tools beitragen. :-P ;-)

... eigentlich frage ich mich auch, warum gerade du mir die Coreutils zuschieben willst, wo du doch der grosse Kenner in dem Thema bist. Bei dem Script oben im Thread hast du ja auch alle Register gezogen! Ich sag nur:

Code: Alles auswählen

: "${method:=zbarimg}"
Wuerd' mich ja schonmal interessieren, wieviel Prozent der Leser das verstehen. (Aber ein cooles und interessantes Konstrukt ist es alle mal. Vermutlich habe ich das noch nie in einem Shellscript gesehen. :THX: )
Use ed once in a while!

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 05.04.2022 13:36:49

Meillo hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 13:07:04

Code: Alles auswählen

: "${method:=zbarimg}"
Wuerd' mich ja schonmal interessieren, wieviel Prozent der Leser das verstehen.
Ich rate mal: setzt Variable method auf zbarimg und tut sonst garnix?

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 05.04.2022 14:33:29

Bitte nicht mit Code erklären weitermachen!
Ich will mich daran selbst versuchen (also verstehen, was warum wo gemacht wird).

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 05.04.2022 15:45:06

letzter3 hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 14:33:29
Bitte nicht mit Code erklären weitermachen!
och menno :(
letzter3 hat geschrieben: ↑ zum Beitrag ↑
05.04.2022 14:33:29
Ich will mich daran selbst versuchen (also verstehen, was warum wo gemacht wird).
:THX:

Sag, wenn Du genug hast. Die Erklärung dürfte auch andere Mitlesende interessieren.
(Thanks @JTH für den Spoiler per PM)

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 07.04.2022 00:24:29

Okay, bin zwar müde und wollte mich eigentlich aus Zeitgründen auch erst am WE wieder damit beschäftigen. Aber damit ihr euren Spass habt und ich noch was lerne.
Hier der laienhafte Erklärversuch (geht davon aus, dass ich sämtliche Feinheiten finde :oops: :mrgreen: :oops: 8O )

Code: Alles auswählen

#!/bin/bash
legt die zu verwendende shell fest

Code: Alles auswählen

set -eu -o pipefail
beenden wenn Nicht-Null-Status oder nicht gesetzte Variablen für die Variable pipefail
Verstehe ich nicht. pipefail wird doch nicht definiert?

Code: Alles auswählen

destname_pdftotext()
{
	pdftotext "$1" - | grep -m1 "^\*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.*\*$" | tr -d '*'
}
Hmmm. destname-Erklärung im eigentlichen Sinne nicht gefunden.
Lege Ziel fest->hier die Funktion (?) pdftotext
Wende pdftotext auf das Dokument (welches?) an. Greppe dann bis die Zahl 1 mal gefunden wurde (-m1).
Ratemodus für "^\ -> alles innerhalb der *
Sammle nur Ziffern 0-9, für YYYY-MM-DD
Setze _
es verlässt mich :cry:
Frage: kann anstelle von [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] auch [:digit:]-[:digit:]-[:digit:] verwendet werden?

Code: Alles auswählen

destname_zbarimg()
{
	zbarimg -q -Sdisable -Scode39.enable <(pdftoppm -png -singlefile "$1")  | cut -d: -f2-
}
Lege Ziel fest->hier die Funktion (?) zbarimg
Wende zbarimg an auf den input, der von pdftoppm kommt. Verwende keinen Barcode->verwende code39 und gebe nur das Barcode-Ergebnis aus.
pdftoppm erzeugt ein PNG und wandelt nur die erste Seite in ein png.
Benutze (nach zbarimg???) einen TRENNER anstelle des Tabulators und nur für die Felder 2 (???)
Also gib nur die 2 gefundenen (Datum _ Variable) aus?

Code: Alles auswählen

: "${method:=zbarimg}"
den : hab ich auf die Schnelle nur als "application" in der bash gefunden. Die englische Erklärung ist mir aber zu hoch. Setze incl. in der Methode (hier->zbarimg) verwendeten Variablen und führe aus? Würde dann mit dem destname korrespondieren.

Code: Alles auswählen

srcfile=$1
Quellfile (ohne Prüfung, ob das überhaupt ein PDF ist?)

Code: Alles auswählen

destdir=${2:-/default/destination/dir}
Zielverzeichnis. Ist von mir zu setzen. Aber bei {2: steig ich aus.

Code: Alles auswählen

destname=$("destname_$method" "$srcfile").pdf
Definition des künftigen Namens in Abhängigkeit der verwendeten Methode. Defaultmäßig also des outputs von cut -d: -f2-, nachdem zbarimg an dem Quellfile rumgewurschtelt hat.

Code: Alles auswählen

echo "Would move '$(realpath "$srcfile")' to '${destdir%/}/${destname}'"
Schreibe auf den screen, was du tun würdest.
Aber wo kommt jetzt realpath her?

Code: Alles auswählen

#mv -nv -- "$srcfile" "${destdir%/}/${destname}"
Auskommentiert wird das Quell-PDF verschoben in das Zielverzeichnis als PDF mit dem Namen der durch destname=$("destname_$method" "$srcfile").pdf festgelegt wurde.

Okay. Maximal die Hälfte verstanden.
Was mir noch nicht einleuchtet: wo liegt das script? Es wird ja kein Verzeichnis angegeben, in dem "gearbeitet" werden soll.

Kann
a) ein Log erzeugt werden, in dem stumpf die Umwandlung dokumentiert wird?
b) eine Warnmeldung per mailx bei Abbruch versandt werden?

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 07.04.2022 21:13:32

War meine Interpretation so gut, dass nichts mehr hinzuzufügen wäre oder so schlecht, das Hopfen und Malz verloren scheinen?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 07.04.2022 21:22:07

Ich überlass das lieber JTH, wer den Schaden anrichtet, muss auch aufräumen :mrgreen:

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von JTH » 07.04.2022 21:46:59

Na danke, eggy :lol:

Ich bin grad unterwegs und hab erst Sonntagabend wieder Gelegenheit, richtig zu antworten. Größere Beiträge sind am Handy doch etwas aufwendig. Antworte dann gerne nochmal ausführlich :)
Manchmal bekannt als Just (another) Terminal Hacker.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von eggy » 07.04.2022 22:02:49

@letzter3: Damit das Warten auf den Weihnachtsmann, aehm auf den JTH nicht zu langweilig wird:
letzter3 hat geschrieben: ↑ zum Beitrag ↑
07.04.2022 00:24:29
Aber wo kommt jetzt realpath her?

Code: Alles auswählen

whereis realpath
which realpath
und mit "apt-file search realpath | grep bin" bekommst dann auch noch erzählt aus welchem Paket das stammt.

tobo
Beiträge: 1990
Registriert: 10.12.2008 10:51:41

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von tobo » 07.04.2022 23:35:38

Oder einfacher

Code: Alles auswählen

apt-file search bin/realpath

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: PDF an Hand des hinterlegten barcodes umbenennen

Beitrag von letzter3 » 10.04.2022 20:03:01

JTH hat geschrieben: ↑ zum Beitrag ↑
07.04.2022 21:46:59
Na danke, eggy :lol:

Ich bin grad unterwegs und hab erst Sonntagabend wieder Gelegenheit, richtig zu antworten. Größere Beiträge sind am Handy doch etwas aufwendig. Antworte dann gerne nochmal ausführlich :)
Ich würde mich freuen.

Antworten