使用「find」指令搜尋PNG文件,透過管道輸出到imagemagick進行批次轉換

使用「find」指令搜尋PNG文件,透過管道輸出到imagemagick進行批次轉換

我有一個包含數千個圖像檔案的目錄,其中大部分是 JPG,但也有一些 PNG。這些檔案沒有副檔名,只是編號。我需要將它們全部轉換為 JPG。

使用尋找我可以獲得所有文件及其類型的列表,然後我可以使用 Imagemagick 通過指定其類型將 PNG 轉換為 JPG:

convert png:10020 jpg:10020.jpg

但我想對所有文件批量執行此操作。我怎麼能透過管道輸出尋找並將所有 PNG 檔案轉換為 JPG?

答案1

find . -type f | while read IN; do
  if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
    convert png:$IN jpg:$IN.jpg;
  fi;
done;

參數的涵義:

  1. .
    在目前目錄下尋找

  2. -type f
    只查找文件,而不是目錄/套接字/等。

  3. while read IN; do
    將每個檔案名稱放入變數中IN並對其運行循環。

  4. if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
    檢查檔案是否為 PNG...

  5. convert png:$IN jpg:$IN.jpg;
    ....如果是,請將其轉換。

  6. fi; done;
    我們完了!

這次我測試了它,它可以工作,將一個充滿 PNG 的目錄轉換.png為 JPG 的擴展名。

相關內容