0

该脚本将列出所有具有相同文件名的文件,即使它们位于不同的(子)目录或具有不同的文件扩展名(或根本没有扩展名):

declare -A array=() dupes=()
while IFS= read -r -d '' file; do 
    base=${file##*/} base=${base%.*}
    if [[ ${array[$base]} ]]; then 
        dupes[$base]+=" $file"
    else
        array[$base]=$file
    fi
done < <(find /the/dir -type f -print0)

for key in "${!dupes[@]}"; do 
    echo "$key: ${array[$key]}${dupes[$key]}"
done

来源

我想做完全相同的事情,但也想在不同的情况下列出具有相同文件名的文件。这意味着所有这些文件将被列为重复文件:

/the/dir/file.txt
/the/dir/folder1/File
/the/dir/folder2/filE.JPG
4

1 回答 1

1

你的 shell 脚本中需要这一行:

base=`echo $base | tr '[A-Z]' '[a-z]'`

这会将您的所有文件名转换为小写。瞧 - 不区分大小写的哈希键。

于 2013-03-05T19:42:48.830 回答