¿Cómo imprimir varios archivos a la vez usando lpr?

¿Cómo imprimir varios archivos a la vez usando lpr?

Estoy intentando imprimir varios archivos desde Shell usando lpr. Entro algo como:

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

pero aparece "lpr: No hay archivo en la solicitud de impresión".

Cuando uso ls como

ls ./*/dir/file.pdf

enumera correctamente los archivos que quiero imprimir. ¿Alguien puede ayudarme a entender qué está pasando?

Respuesta1

Una de las formas en que recibo el mensaje.

lpr: No hay ningún archivo en la solicitud de impresión.

es cuando el primer archivo por patrón es un archivo vacío.

P.ej:

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

Para su foralternativa, no la necesita ls; en realidad es propenso a errores graves, por ejemplo, si los nombres de archivos contienen espacios.

Como alternativa puedes probar:

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

Y recuerda COTIZAR. Cita siempre.


Tenga en cuenta también:

Al utilizar lpr PATTERNtodos los archivos, se ponen en cola paraunotrabajo nombrado como primer archivo en la lista.

Eso es:

# List files:
ls file*
file1 file2 file3

# Add to print job
lpr file*

Ahora archivo1, archivo2 y archivo3 deberían estar en la cola de impresión, pero no como tres trabajos, sino como uno. El nombre del trabajo se proporciona desde el primer archivo si no está configurado por opción:

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

Si tiene lpesto, esto se informa más detalladamente mediante:

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

Si lo desea, también puede establecer un nombre para el trabajo, por ejemplo:

lpr -T "My 3 Files" file*

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

Respuesta2

Sin conocer los detalles del diseño de sus directorios, supongo que tiene problemas para interpretar los diferentes niveles de subdirectorios o quizás espacios en los nombres de archivos.

Puedes intentar usar findy canalizar los archivos lprcon xargs:

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

Respuesta3

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

información relacionada