Existe-t-il un moyen de trouver tous les fichiers d'un répertoire avec des noms de fichiers en double, quelle que soit la casse (majuscules et/ou minuscules) ?
Réponse acceptée :
Si vous disposez d'utilitaires GNU (ou au moins d'un ensemble capable de gérer les lignes terminées par zéro), une autre réponse propose une excellente méthode :
find . -maxdepth 1 -print0 | sort -z | uniq -diz
Remarque :la sortie aura des chaînes terminées par zéro ; l'outil que vous utilisez pour le traiter plus avant devrait être capable de gérer cela.
En l'absence d'outils traitant des lignes terminées par zéro, ou si vous voulez vous assurer que votre code fonctionne dans des environnements où de tels outils ne sont pas disponibles, vous avez besoin d'un petit script :
#!/bin/sh
for f in *; do
find . -maxdepth 1 -iname ./"$f" -exec echo ; | wc -l | while read count; do
[ $count -gt 1 ] && echo $f
done
done
Quelle est cette folie ?
Voir cette réponse pour une explication des techniques qui rendent cela sûr pour les noms de fichiers fous.