Macos 比较具有相同名称的文件
我创建了一个脚本来比较文件夹中的文件(名为.jpg,没有,但名称相同)。这个问题是脚本搜索一个目录中的文件,而不是子目录中的文件!我怎么能修好它Macos 比较具有相同名称的文件,macos,bash,for-loop,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 sam
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
对于关联数组,这需要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
您也可以尝试使用
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
find-键入f-name“*.sh”-printf“%f\n”| cut-f1-d.”>jpg.txt
读行时
做
找到-名称“$line.*”-打印
完成
您是在尝试检测同一目录中的同名文件,还是在任何目录中查找它们?例如“/a/b/c/foo.jpg”和“/d/e/foo”我试图在任何目录中查找相同名称的文件。是否可以添加支持以同时检查此文件所在目录的名称(仅一个目录)?例如,如果Desktop/a/test.jpg==Myfiles/a/test.jpg,则应该很好!