
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 for
alternativa, 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 PATTERN
todos 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 lp
esto, 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 find
y canalizar los archivos lpr
con xargs
:
find . -wholename "*/dir/file.pdf" -print0 | xargs -0 lpr -P PRINTERNAME
Respuesta3
find /home/.../.../** -exec lp {} \;