PDF 파일 일괄 트리밍을 위한 bash 스크립트

PDF 파일 일괄 트리밍을 위한 bash 스크립트

내 디렉토리에 여러 개의 PDF 파일이 있습니다. PDF 라이브러리를 활용하여 특정 페이지를 새 파일(별도의 출력 폴더)에 저장하고 싶습니다.

가장 좋은 접근 방식은 무엇입니까?

이것은 내가 작성한 코드이지만 더 많은 추가 사항이 필요합니다.

#!/bin/bash
# Saves 1st 4 pages or every pdf file to a new file.

for i in *.pdf; do


pdfcpu trim -pages "1-4" ${i}.pdf output ${i + %}.pdf


done

이 코드는 작동하지 않지만 이 수준까지 왔습니다. 내 질문,

  1. 각 파일을 반복하는 방법
  2. 처음 4페이지만 다른 폴더에 저장하세요.

제가 사용하고 있는 라이브러리는CPU, 구체적으로trim기능.

답변1

당신은 가깝습니다.

#! /bin/bash -

shopt -s nullglob

mkdir -p trimmed || exit

ret=0
for file in ./*.pdf; do
  pdfcpu trim -pages 1-4 "$file" "trimmed/$file" || ret="$?"
done
exit "$ret"
  • ./glob을 사용할 때 . 로 끝나지 않도록 접두사를 사용하는 것이 가장 좋습니다 -.
  • Bash/sh에서는 매개변수 확장을 인용해야 합니다.
  • Bash/sh에서 glob이 일치하지 않으면 패턴이 그대로 명령에 전달됩니다. Bash에서는 이 기능을 사용하여 shopt -s nullglob(또는 failglob다른 효과를 사용하여) 이 오류를 해결할 수 있습니다 .
  • $i루프에 .pdf확장자를 포함한 전체 파일 이름을 포함합니다. 를 사용하면 ${i}.pdf두 개의 확장자가 생기고 pdfcpu해당 file.pdf.pdf파일을 찾을 수 없습니다.
  • ${i + %}무의미한. 이것으로 무엇을 달성하고 싶은지 명확하지 않습니다. $file==의 출력 파일 이름을 file.pdf로 지정 하려면 이를 출력 파일 경로로 전달할 trimmed/file%.pdf수 있습니다 ."trimmed/${file%.pdf}%.pdf"
  • ~에 따르면수동, 거기 있으면 안 돼요 output.
  • 실패에 주의를 기울이고 실패가 발생하면 어떻게 해야 하는지 기억하세요. 여기서 pdfcpu명령이 실패하면 나머지 명령을 계속 실행하지만 스크립트의 종료 상태에 실패를 보고합니다.

관련 정보