폴더의 각 파일에는 pdf
관련 파일이 3개 있습니다.
original.pdf
original.txt
original_roc_mrc.pdf
original_roc_mrc_updated.pdf
이제 다음을 수행하는 스크립트가 필요합니다.
페이지 수가 동일한
original.pdf
지 확인하세요 .original_roc_mrc_updated.pdf
original_roc_mrc.pdf
크기가 최대 20% 더 큰지 확인하세요 .original_roc_mrc_updated.pdf
이전 내용이 true인 경우 ,
original.pdf
및original.txt
을 삭제합니다original_roc_mrc.pdf
. 1) 또는 2)가 거짓인 경우 "pack"에 대해 아무것도 수행하지 마십시오.
답변1
pdftk가 설치되어 있지 않고 필요한 모든 Java 항목을 설치하고 싶지 않으므로 여기에 poppler-util의 pdfinfo를 사용하여 페이지 수를 가져온 다음 나머지 작업을 수행하는 스크립트가 있습니다.
#!/usr/bin/env bash
# function to get filesize
filesize() {
stat -c '%s' "$1"
}
# function to get number of pages
numpages() {
pdfinfo "$1" | sed -n 's/^Pages:\s*\([0-9]*\)\s*/\1/p'
}
# get number of pages for these two files
pages1="$(numpages original.pdf)"
pages2="$(numpages original_roc_mrc_updated.pdf)"
# get filesizes of these two files
size1="$(filesize original_roc_mrc_updated.pdf)"
size2="$(filesize original_roc_mrc.pdf)"
# determine the maxfilesize to be 20% larger or less
# 120% = the original size plus 1/5th of original size
maxsize=$(( size1 + size1/5 ))
# see if pages1=pages2 and size2 <= maxsize
if [[ pages1 -eq pages2 ]] &&
[[ size2 -le maxsize ]] ; then
rm original.pdf original.txt original_roc_mrc.pdf
fi
어떤 이유로 pdftk를 사용하려는 경우 해당 기능을 다음으로 바꿀 수 있습니다.
numpages() {
pdftk "$1" dump_data | grep NumberOfPages | awk '{print $2}'
}
이름이 포함되지 않은 폴더의 모든 .pdf에 이름을 적용하려면 mrc
다음과 같은 루프를 사용할 수 있습니다(질문 편집에서 동일한 코드 대부분 사용).
#!/usr/bin/env bash
# function to get filesize
filesize() {
stat -c '%s' "$1"
}
# function to get number of pages
numpages() {
pdfinfo "$1" | sed -n 's/^Pages:\s*\([0-9]*\)\s*/\1/p'
}
for filename in *.pdf ; do
# skip files with "mrc" in their name
if [[ "$filename" =~ "mrc" ]] ; then
continue
fi
# determine common part of filenames
commonname="${filename%.pdf}"
# get number of pages for these two files
pages1="$(numpages "$filename")"
pages2="$(numpages "${commonname}_roc_mrc_updated.pdf")"
# get filesizes of these two files
size1="$(filesize "${commonname}_roc_mrc_updated.pdf")"
size2="$(filesize "${commonname}_roc_mrc.pdf")"
# determine the maxfilesize to be 20% larger or less
# 120% = the original size plus 1/5th of original size
maxsize=$(( size1 + size1/5 ))
if [[ pages1 -eq pages2 ]] &&
[[ size2 -le maxsize ]] ; then
rm "$filename" "${commonname}.txt" "${commonname}_roc_mrc.pdf"
fi
done