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파일을 사용하고 파이핑해 볼 수 있습니다 .lprxargs

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

답변3

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

관련 정보