簡體   English   中英

imagemagik按目錄轉換文件

[英]imagemagik convert files by directory

我寫了這個簡單的shell腳本,使用imagemagik轉換jpg。 它工作正常,但我想在每次查找的每次迭代過程中通過腳本傳遞文件擴展名時都包括png,gif,jpeg等。 我確實更喜歡這種在查找結果上循環的方法,這樣我可以更好地報告所處理的每個項目,並允許使用更具擴展性的腳本向每個過程添加其他大小和轉換。 (而不是簡單的convert *命令。)。

有什么建議么?

find cdn/ -name '*.jpg' -print |  sort | 
while read f; 
 do 
 b=$(basename $f .jpg)
 in="${b}.jpg"
 thumb="${b}_150x150.jpg" 
if [ -e $thumb ]; 
then 
 true  
else 
 convert -resize 150 $in $thumb   
fi

done

使它更具模塊化,調用第二個腳本來處理圖像文件。

find /path -type f -print |
while read filename ; do
     sh /path/to/process_image $filename
done

script you can then choose what do do based on the file's extension name or file type. 然后,您可以在腳本中根據文件的擴展名或文件類型選擇要執行的操作。 該腳本可以根據圖像類型,大小等您要執行的操作來調用其他腳本。

將問題分解為1)查找文件,2)決定如何處理文件,3)處理文件。 使其模塊化,可以將問題分為幾個部分,您可以分別解決。

+1表示“將問題分解為1)查找文件,2)決定如何處理文件,3)處理文件。將其模塊化將問題分解為可以單獨解決的部分。” 如前所述。 這允許使用更具擴展性的方法來添加更多處理。

這樣,您不需要通過擴展名傳遞文件。 這就是您想要的文件擴展名嗎? 你必須這樣做嗎?

也,

  • 使用-iname '*.jpg'而不是-name '*.jpg'來進行不區分大小寫的搜索。
  • 在查找結果中使用更多-iname參數來查找所需的所有其他擴展。 例如,

    find cdn/ \\(-iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.gif' \\) -print

即,您可以一次性找到所有想要的文件,而不必一遍又一遍地查找不同的擴展名文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM