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

4

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

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

mas recebo "lpr: Nenhum arquivo no pedido de impressão".

Quando uso o ls como

ls ./*/dir/file.pdf

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

    
por James 23.04.2013 / 22:38

2 respostas

3

Uma das formas de obter a mensagem

lpr: No file in print request.

é 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ê for alternativa - você não precisa de ls ; na verdade, é propenso a mal erros, por ex. se nomes de 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:

Usando lpr PATTERN , todos os arquivos são enfileirados em um trabalho nomeado como primeiro arquivo na lista.

Isto é:

# List files:
ls file*
file1 file2 file3

# Add to print job
lpr file*

Agora file1 file2 e file3 devem estar na fila de impressão - mas não como três jobs, mas um. O nome do trabalho é fornecido a partir do 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ê tem lp , isso é relatado mais detalhadamente por:

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

Se você quiser, 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
    
por 24.04.2013 / 02:40
2

Sem saber os detalhes do layout de seus diretórios, eu diria que está tendo problemas para interpretar os diferentes níveis de subdiretórios ou talvez espaços em nomes de arquivos.

Você pode tentar usar find e canalizar os arquivos para lpr com xargs :

find . -wholename "*/dir/file.pdf" -print0 | xargs -0 lpr -P PRINTERNAME
    
por 23.04.2013 / 23:46