如何使用lpr同時列印多個檔案?

如何使用lpr同時列印多個檔案?

我正在嘗試使用 lpr 從 shell 列印多個檔案。我輸入類似:

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並將文件透過管道傳輸lprxargs

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

答案3

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

相關內容