Как распечатать несколько файлов одновременно с помощью lpr?

Как распечатать несколько файлов одновременно с помощью lpr?

Я пытаюсь распечатать несколько файлов из оболочки с помощью lpr. Я ввожу что-то вроде:

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

но я получаю «lpr: Нет файла в запросе на печать».

Когда я использую ls как

ls ./*/dir/file.pdf

он правильно перечисляет файлы, которые я хочу распечатать. Может кто-нибудь помочь мне понять, что происходит?

решение1

Один из способов, которым я получаю сообщение

lpr: В запросе на печать нет файла.

когда первый файл по шаблону является пустым файлом.

Например:

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

Для вашей forальтернативы - вам это не нужно ls; на самом деле это подвержено серьезным ошибкам, например, если имена файлов содержат пробелы.

В качестве альтернативы вы можете попробовать:

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

И не забывайте ЦИТАТИРОВАТЬ. Всегда цитируйте.


Также обратите внимание:

Используя lpr PATTERNвсе файлы, поставьте их в очередьодинзадание названо как первый файл в списке.

То есть:

# List files:
ls file*
file1 file2 file3

# Add to print job
lpr file*

Теперь file1 file2 и file3 должны быть в очереди печати – но не как три задания, а как одно. Имя задания берется из первого файла, если не задано опцией:

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

Если у вас lpоб этом сообщается более подробно:

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

При желании вы также можете задать название задания, например:

lpr -T "My 3 Files" file*

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

решение2

Не зная подробностей структуры ваших каталогов, я бы предположил, что у него возникли проблемы с интерпретацией различных уровней подкаталогов или, возможно, пробелов в именах файлов.

Вы можете попробовать использовать findи передать файлы lprс помощью xargs:

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

решение3

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

Связанный контент