ls/grep의 출력을 pdfunite의 입력으로 사용하려면 어떻게 해야 합니까?

ls/grep의 출력을 pdfunite의 입력으로 사용하려면 어떻게 해야 합니까?

pdfunite를 사용하여 여러 PDF 파일을 하나의 출력 파일로 병합하고 싶습니다. 디렉토리에는 다양한 내용이 포함되어 있으므로 ls/grep을 사용하여 적절한 파일 이름을 얻은 다음 pdfunite를 사용하여 정리할 수 있다고 생각했습니다. ls/grep의 출력은 다음과 같습니다.

ls | grep "handout...pdf" 
handout01.pdf*
handout02.pdf*
handout03.pdf*
handout04.pdf*
handout05.pdf*
handout06.pdf*

그런 다음 다음 구문이 있는 pdfunit을 호출하려고 합니다.

 pdfunite [options] PDF-sourcefile1..PDF-sourcefilen PDF-destfile

내 문제는 ls/grep의 출력을 pdfunite로 파이프할 수 없는 것 같다는 것입니다. 왜냐하면 그렇게 작동하지 않기 때문입니다. 반면에 다음을 시도하면:

pdfunite ls | grep "handout...pdf" grep.pdf

그런 다음 grep은 분명히 내가 선택한 출력 파일에 대해 불평합니다.

grep: grep.pdf: No such file or directory

나는 두 가지 별도의 단계를 수행하면 작동할 것이라는 것을 알고 있지만 한 줄로 이 작업을 수행하는 방법을 알고 싶습니다.

답변1

파일 패턴이 그렇게 단순하다면 정규 표현식이 실제로 필요하지 않으며 간단한 와일드카드를 사용할 수 있습니다.

pdfunite handout??.pdf

그렇지 않으면 명령 및 -regex와 함께 정규식을 사용할 수 있지만 find여러 파일 그룹으로 분할할 가능성이 없는 이를 실행하는 방법을 찾을 수 없습니다. 이를 수행할 수 있는 방법 중 일부는 파일 이름에 공백이 없는지에 따라 달라집니다.

답변2

"틱" 문자를 사용하여 이를 수행할 수 있다고 생각합니다(틸다 위에 있는 것). 다음과 같이 시도해 보세요.

pdfunite [options] `ls | grep "handout...pdf"`

내가 이해한 바로는 이것이 명령을 중첩하는 방법입니다. 틱 내부의 모든 항목은 자체 명령으로 실행되며 그 출력은 틱을 대체합니다. 따라서 위의 명령은 본질적으로 다음과 같습니다.

pdfunite [options] handout01.pdf* handout02.pdf* ...

답변3

반드시 grep이 필요하지는 않습니다. 패턴을 에 전달할 수 있습니다 ls.

pdfunite $(ls handout*.pdf*) merged.pdf

관련 정보