簡體   English   中英

bash 比較文件夾之間的文件,如果不退出,做點什么

[英]bash compare files between folders, and if they don't exit, do something

我有一個包含常規圖片的文件夾,另一個包含調整大小的圖片。

目標是檢查圖片是否未調整大小,調整大小並保存在另一個文件夾中。

為簡單起見,我使用echo ,因為我沒有比較工作。

for file in ../regular/*.jpg;
do   
    img=`basename "$file"`

    FILE=./resized/$img

    if [ ! -f "$FILE" ]; then
        echo "$img NOT RESIZED"
    fi  
done

這段代碼只是回應了常規文件夾中所有圖片的NOT RESIZED ,即它似乎根本沒有進行比較。

我的錯誤在哪里?

您應該嘗試使用diff命令來比較目錄:

diff -r "$PATH1" "$PATH2"
for file in ../regular/*.jpg;
FILE=./resized/$img
  1. 嘗試使用絕對路徑,也可以添加 echo $FILE 來查看哪些腳本嘗試驗證
  2. 如果此目錄包含大量文件,則可能超出命令行長度限制(通常為 ~4kb-32kb)
  3. 您在 basename 命令中使用配額,為什么? 如果您的圖像可能包含空格,您也應該在“if”命令中使用配額,檢查下面的腳本
for file in ../regular/*.jpg;
do   
    img=$(basename "$file")
    if [ ! -f "./resized/$img" ]; then
        echo "$img NOT RESIZED"
    fi  
done

暫無
暫無

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

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