Como imprimir vários arquivos ao mesmo tempo usando lpr?

Como imprimir vários arquivos ao mesmo tempo usando lpr?

Estou tentando imprimir vários arquivos do shell usando lpr. Eu insiro algo como:

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

mas recebo "lpr: Nenhum arquivo na solicitação de impressão".

Quando eu uso ls como

ls ./*/dir/file.pdf

ele lista corretamente os arquivos que desejo imprimir. Alguém pode me ajudar a entender o que está acontecendo?

Responder1

Uma das maneiras de receber a mensagem

lpr: Nenhum arquivo na solicitação de impressão.

é quando o primeiro arquivo por padrão é um arquivo vazio.

Por exemplo:

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

Para você foralternativa - você não precisa ls; na verdade, é propenso a erros graves, por exemplo, se os nomes dos arquivos contiverem espaços.

Como alternativa você pode tentar:

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

E lembre-se de Citar. Sempre cite.


Observe também:

Ao usar lpr PATTERNtodos os arquivos, eles ficam na fila paraumtrabalho nomeado como primeiro arquivo na lista.

Aquilo é:

# List files:
ls file*
file1 file2 file3

# Add to print job
lpr file*

Agora arquivo1 arquivo2 e arquivo3 devem estar na fila de impressão – mas não como três trabalhos, mas como um. O nome do trabalho é fornecido no primeiro arquivo, se não for definido pela opção:

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

Se você tiver, lpisso será relatado de forma mais detalhada por:

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

Se desejar, você também pode definir um nome para o trabalho, por exemplo:

lpr -T "My 3 Files" file*

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

Responder2

Sem conhecer os detalhes do layout dos seus diretórios, acho que está tendo problemas para interpretar os diferentes níveis de subdiretórios ou talvez espaços nos nomes dos arquivos.

Você pode tentar usar finde canalizar os arquivos lprcom xargs:

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

Responder3

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

informação relacionada