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 {} \;