현재 디렉터리 및 하위 디렉터리에 있는 특정 파일 형식의 모든 파일을 전달합니다.

현재 디렉터리 및 하위 디렉터리에 있는 특정 파일 형식의 모든 파일을 전달합니다.

여러 PDF 문서에 자동으로 서명하기 위해 많은 매개변수와 스위치가 포함된 정교한 500자 이상의 명령을 만들었습니다.

저는 JSignPDF를 사용하고 있으며 현재 디렉토리와 하위 디렉토리를 포함하여 배치 모드를 사용하고 싶습니다.

내가 문제가 있는 명령의 관련 부분은 다음과 같습니다.

java -jar ../jsignpdf-1.4.3/JSignPdf.jar *.pdf -a

...물론 이는 현재 디렉토리의 모든 PDF 파일에 적용됩니다. 모든 하위 디렉터리에 있는 모든 .pdf 파일을 동시에 가져오도록 하려면 어떻게 해야 합니까?

나는 작동하지 않는 몇 가지 작업을 시도했습니다. 초보자, 언급할 가치도 없는 작업... -r(분명히 작동하지 않거나 작동하지 않음)과 같은 작업을 시도했습니다.

이것이 간단한 대답인지 아니면 이것이 작동한다면 약간의 이상한 마법이 필요한지 궁금합니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변1

zsh또는 를 사용하여 ksh93 -G다음을 수행할 수 있습니다.

java -jar ../jsignpdf-1.4.3/JSignPdf.jar ./**/*.pdf -a

fishor 를 사용하여 동일한 작업을 수행할 수 있지만 bash -O globstar디렉터리 트리가 내려갈 때 심볼릭 링크를 통과할 수 있다는 점에 유의하세요( bash4.3에서는 부분적으로 수정되었고 5.0 이상에서는 완전히 수정되었습니다).

그렇지 않고 파일 목록이 너무 크지 않으면 다음을 수행할 수 있습니다.

find . -name '*.pdf' -exec sh -c '
  exec java -jar ../jsignpdf-1.4.3/JSignPdf.jar "$@" -a' sh {} +

그러나 명령줄 크기 제한을 극복하기 위해 find목록을 분할하고 여러 명령을 실행할 수도 있습니다 .sh

관련 정보