Linux 檔案處理批次作業

記錄一些我用過的批次處理,基本上都是指令加上迴圈搞定

處理檔名時,最好保持將檔名用「" “」包起來的習慣!!

將資料夾分別壓縮成 zip(cbz)檔

如果有很多的漫畫圖檔放在個別的資料夾裡,一個資料夾就是一集,那麼分別把它們壓成 cbz 檔是個很好的選擇

首先用 ls 將目錄底下的所有資料夾名稱匯出到一個 list 檔

ls > /tmp/list


接著引用該 list 作為檔名來將資料夾批次壓縮成 *.cbz 檔

while read file; 
do zip -r "${file}".cbz "${file}";
done < /tmp/list


最後再刪除 list 檔

rm /tmp/list

將目錄中資料夾裡所有圖檔合成一個 pdf 檔

情境同上面,除了把每一集的漫畫壓成 cbz 檔之外,也可以將它們合成 pdf 檔,一集一個 pdf

首先安裝 ImageMagick

sudo apt install imagemagick


使用迴圈合成 pdf 檔並且以資料夾名稱作為 pdf 的檔名

for dir in *
do 
  (cd "${dir}" && convert * /檔案存放路徑/"$(basename "${dir}").pdf")
done


如果轉換失敗出現下面的訊息:

convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.


可以將下面的內容貼到 /etc/ImageMagick-X/policy.xml</policymap> 之前

<policy domain="coder" rights="read | write" pattern="PDF" />

將所有檔名中的空白替換為下底線

for file in *
  do mv "${file}" "$(echo "${file}" | tr ' ' '_')"
done

批次解壓縮有密碼的 rar 檔

for file in *.rar
  do rar -p'PASSWORD' x "${file}"
done
wade Written by:

本站站長