2013-11-24 100 views
0

我創建了腳本來比較文件夾中的文件(名稱爲.jpg,沒有它但具有相同的名稱)。腳本在ONE目錄中搜索文件的問題,而不是在SubDirectories中!可以修復它?使用相同名稱比較文件

for f in * 
do 
    for n in *.jpg 
do 
tempfile="${n##*/}" 
    echo "Processing" 
echo "${tempfile%.*}" 
echo "$f" 
    if [[ "${tempfile%.*}" = $f ]] 
then 
    echo "This files have the same name!" 
//do something here 
else 
echo "No files" 
    fi 
done 
done 
+0

你想檢測同一目錄下同名文件,或者是你tyring找到他們在任何目錄?防爆。 「./a/b/c/foo.jpg」和「./d/e/foo」 –

+0

我正試圖在任何目錄中找到同名文件 – user3027156

回答

0

這需要bash版本4的關聯數組。

shopt -s globstar nullglob extglob 
declare -A jpgs 

for jpg in **/*.jpg; do 
    name=$(basename "${jpg%.jpg}") 
    jpgs["$name"]=$jpg 
done 

for f in **/!(*.jpg); do 
    name=$(basename "$f") 
    if [[ -n ${jpgs["$name"]} ]]; then 
     echo "$f has the same name as ${jpgs["$name"]}" 
    fi 
done 
+0

非常感謝您! :) – user3027156

+0

是否可以添加支持以檢查該文件所在目錄的名稱(只有一個目錄)?例如,如果Desktop/a/test.jpg == Myfiles/a/test.jpg那麼它應該是好! – user3027156

0

您也可以嘗試使用find

find . -type f -name "*.sh" -printf "%f\n" | cut -f1 -d '.' > jpg.txt 

while read line 
do 
    find . -name "$line.*" -print 
done < jpg.txt 
相關問題