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