[memo] find 應用

針對檔案生成驗證用雜湊

針對目前目錄的未生成雜湊的檔案生成 SHA256 雜湊

find . -maxdepth 1 -path "*.sha256" -prune -o -name "*" -type f -exec sh -c '[ ! -f "{}.sha256" ] && sha256sum "{}" | tee "{}.sha256" ' \;

拆解與組裝 PDF

對於這些指令,您需要以下套件:

  • pdf2svg ( 依賴 Poppler ( v0.5.4 維迦 ) 與 Cairo ( v1.2.6 與 v1.4.10 為佳 ) ),您需要編譯它們
  • inkscape
  • ghostscript

將原始 PDF 拆解為 SVG (單頁為一個檔案)

find . -maxdepth 3 -path ./ORIGIN_PDF -prune -o -type f -name "*.pdf" -exec sh -c 'export DIRVARTEMP="$(dirname "{}")" ; export FILEVARTEMP="$(basename "{}")" ; pdf2svg "{}" "$DIRVARTEMP/../$FILEVARTEMP%03d.svg" all ' \;

以上將生成捨棄文字資訊的 SVG 檔案,

pdf2svg 的輸出參數 %03d 意思為未滿 3 位數的流水號補上 0 ,請依需求修改。

將個位數編號的 SVG 檔案前方加上 0 (可選)

find . -maxdepth 3 -type f -name "*.svg" -exec sh -c 'export DIRVARTEMP="$(dirname "{}")" ; export FILEVARTEMP="$(basename "{}")" ; cd "$DIRVARTEMP" ; rename .pdf .pdf0 *.pdf?.svg ' \;

若先前未在流水號補 0 造成排序問題時,可以用此方式批次修正。

將修改後的拆分 SVG 批次轉換成 PDF,並組合拆開的 PDF 為單個 PDF

find . -maxdepth 1 -type f -name "*.svg" -exec sh -c 'export DIRVARTEMP="$(dirname "{}")" ; export FILEVARTEMP="$(basename "{}")" ; inkscape --file="{}" --export-pdf="$DIRVARTEMP/$FILEVARTEMP.pdf" ' \; || echo "An error occurred, aborted." && find . -maxdepth 1 -type f -name "*.pdf" -exec sh -c 'export DIRVARTEMP="$(dirname "{}")" ; export FILEVARTEMP="$(basename "{}")" ; cd "$DIRVARTEMP" ; [ ! -d ./output/ ] && mkdir output ; [ ! -f ./output/output.pdf ] && gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dColorConversionStrategy=/LeaveColorUnchanged -dDownsampleMonoImages=false -dDownsampleGrayImages=false -dDownsampleColorImages=false -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode -dCompressFonts=true -r150 -sOutputFile=./output/output.pdf *.pdf ' \; || echo "An error occurred, aborted."

無須保留文字資訊時,請在 inkscape 軟體套件指令後方加入 --export-text-to-path 以捨棄文字資訊 ( 轉為路徑 )。

預設圖片
Huán-Hsüān Lín (WordPressLocal)
文章: 18