Wie drucke ich mit lpr mehrere Dateien gleichzeitig?

Wie drucke ich mit lpr mehrere Dateien gleichzeitig?

Ich versuche, eine Reihe von Dateien von der Shell aus mit lpr auszudrucken. Ich gebe etwas ein wie:

lpr -P PRINTERNAME ./*/dir/file.pdf

aber ich erhalte die Meldung „lpr: Keine Datei in der Druckanforderung.“.

Wenn ich ls als

ls ./*/dir/file.pdf

Die Dateien, die ich drucken möchte, werden korrekt aufgelistet. Kann mir jemand helfen zu verstehen, was los ist?

Antwort1

Eine der Möglichkeiten, wie ich die Nachricht bekomme

lpr: Keine Datei in der Druckanforderung.

ist, wenn die erste Datei nach Muster eine leere Datei ist.

Z.B:

$ touch f0
$ echo A > f1
$ lpr f*
lpr: No file in print request.

Für Sie foreine Alternative: Sie brauchen nicht ls, da es tatsächlich anfällig für schwerwiegende Fehler ist, z. B. wenn Dateinamen Leerzeichen enthalten.

Alternativ könnten Sie Folgendes versuchen:

shopt -s nullglob  # So that if there are no matches you won't try to send
                   # pattern to printer.
for x in ./*/dir/file.pdf; do 
     lpr -P PRINTERNAME "$x"; 
done
shopt -u nullglob  # Restore

Und denken Sie daran, Zitate zu verwenden. Immer zitieren.


Beachten Sie außerdem:

Durch die Verwendung lpr PATTERNwerden alle Dateien in die Warteschlange gestellteinsJob mit dem Namen der ersten Datei in der Liste.

Das ist:

# List files:
ls file*
file1 file2 file3

# Add to print job
lpr file*

Jetzt sollten sich Datei1, Datei2 und Datei3 in der Druckwarteschlange befinden – aber nicht als drei Aufträge, sondern als einer. Der Name des Auftrags wird aus der ersten Datei übernommen, wenn er nicht durch die Option festgelegt wurde:

lpq
Rank    Owner   Job     File(s)              Total Size
1st     user    80      file1                9248 bytes
                         |
                         +----- Actually is file1, file2, file3

Wenn ja, lpwird dies ausführlicher gemeldet durch:

lp file*
request id is PRINTER-362 (3 file(s))

Wenn Sie möchten, können Sie dem Job auch einen Namen geben, zum Beispiel:

lpr -T "My 3 Files" file*

lpq
Rank    Owner   Job     File(s)              Total Size
1st     user    80      My 3 Files           9248 bytes

Antwort2

Ohne das Layout Ihrer Verzeichnisse im Detail zu kennen, würde ich vermuten, dass es Probleme beim Interpretieren der verschiedenen Unterverzeichnisebenen oder vielleicht Leerzeichen in Dateinamen gibt.

Sie können versuchen, die Dateien mit findfolgendem Befehl weiterzuleiten :lprxargs

find . -wholename "*/dir/file.pdf" -print0 | xargs -0 lpr -P PRINTERNAME

Antwort3

find /home/.../.../** -exec lp {} \;

verwandte Informationen