比较具有相同名称的文件

时间:2013-11-24 12:01:59

标签: macos bash for-loop

我创建了脚本来比较文件夹中的文件(名称为.jpg,没有它但是使用相同的名称)。脚本在一个目录中搜索文件的问题,而不是在子目录中搜索!我如何修复它?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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