for 루프에서 문자열 편집

for 루프에서 문자열 편집

아래 코드는 빈 PDF 이미지 테두리를 자릅니다. 아래 예제의 출력 파일에는 확장명 ".pdf" 앞에 "_cropped"가 포함되어 있습니다. 문자열을 인덱싱하는 것은 꼬리를 제거하는 데 좋은 해결책이 될 수 있습니다.이것URL은 색인에 대한 설명을 제공합니다. 해당 파일 이름을 변수에 할당하고 전달하는 방법을 모르겠습니다 <old-name> <new-name>. 도움을 주시면 감사하겠습니다. :)

for f in *; do
    pdf-crop-margins -v -p 0 -a -6 "$(basename $f .pdf).pdf";
done

답변1

Bash에서의 교체는 매우 효율적입니다.

v="file_cropped.pdf"
# file_cropped.pdf

echo ${v%_cropp*}.pdf
# file.pdf

답변2

입출력 $f: .example_cropped.pdfexample.pdf

  • 옵션 1, basename접근 방식:

    echo $(basename "$f" _cropped.pdf).pdf
    
  • 옵션 2,sed

    sed 's/_cropped//' <<< "$f"
    
  • 옵션 3, rename- 문자열 대신 파일에 적용됩니다. -n시험 실행을 위해 파일 이름이 직접 변경됩니다 .

    rename 's/_cropped//' "$f"
    

rename또한 한 번에 여러 파일에 적용할 수도 있습니다. 어쩌면 이것이 정말로 필요한 것일 수도 있습니다.

관련 정보