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

シェルスクリプトに次の行が必要です。

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

これにより、すべてのファイル名が小文字に変換されます。出来上がり-大文字と小文字を区別しないハッシュキー。

于 2013-03-05T19:42:48.830 に答える