Bonjour à tous,
J'aimerai savoir s'il existe sous linux un outil, ou un utilitaire, ou une
commande qui me permettrait de rechercher dans un répertoire donnée tous
les fichiers portant le même nom afin de faire un diff dessus et de
faire... le ménage.
Merci de vos réponses...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Chazelas
2003/10/31, 09:09(+01), Iris Pallida:
J'aimerai savoir s'il existe sous linux un outil, ou un utilitaire, ou une commande qui me permettrait de rechercher dans un répertoire donnée tous les fichiers portant le même nom afin de faire un diff dessus et de faire... le ménage.
cd /répertoire/donné && find . -type f -print0|awk -F/ -vRS= '{f[$NF]=f[$NF]$0"n" n[$NF]++}END{for(i in f)if(n[i]>1)print i":n"f[i]}'
J'aimerai savoir s'il existe sous linux un outil, ou un utilitaire, ou une
commande qui me permettrait de rechercher dans un répertoire donnée tous
les fichiers portant le même nom afin de faire un diff dessus et de
faire... le ménage.
cd /répertoire/donné &&
find . -type f -print0|awk -F/ -vRS=\0 '{f[$NF]=f[$NF]$0"n"
n[$NF]++}END{for(i in f)if(n[i]>1)print i":n"f[i]}'
J'aimerai savoir s'il existe sous linux un outil, ou un utilitaire, ou une commande qui me permettrait de rechercher dans un répertoire donnée tous les fichiers portant le même nom afin de faire un diff dessus et de faire... le ménage.
cd /répertoire/donné && find . -type f -print0|awk -F/ -vRS= '{f[$NF]=f[$NF]$0"n" n[$NF]++}END{for(i in f)if(n[i]>1)print i":n"f[i]}'
a= typeset -A a;: ./**/*(ND.e{'a[$REPLY:t]+=$REPLY//'}) for i (${(ok)a[(R)*//?*]})print -lr $i: ${(s://:)a[$i]} ""
histoire d'avoir une liste triée :)
Mais c'est vrai que c'aurait été un peu plus lisible comme ça :
find . -type f -print0 | awk -F/ -vRS=' ' ' { nom=$NF chemin=$0 liste_chemins[nom] = liste_chemins[nom] $chemin "n" nombre_occurrences[nom]++ } END{ for (nom in nombre_occurrences) if (nombre_occurrences[nom] >= 2) print nom ":n" liste_chemins[nom] }'
a= typeset -A a;: ./**/*(ND.e{'a[$REPLY:t]+=$REPLY//'})
for i (${(ok)a[(R)*//?*]})print -lr $i: ${(s://:)a[$i]} ""
histoire d'avoir une liste triée :)
Mais c'est vrai que c'aurait été un peu plus lisible comme ça :
find . -type f -print0 | awk -F/ -vRS=' ' '
{
nom=$NF
chemin=$0
liste_chemins[nom] = liste_chemins[nom] $chemin "n"
nombre_occurrences[nom]++
}
END{
for (nom in nombre_occurrences)
if (nombre_occurrences[nom] >= 2)
print nom ":n" liste_chemins[nom]
}'
a= typeset -A a;: ./**/*(ND.e{'a[$REPLY:t]+=$REPLY//'}) for i (${(ok)a[(R)*//?*]})print -lr $i: ${(s://:)a[$i]} ""
histoire d'avoir une liste triée :)
Mais c'est vrai que c'aurait été un peu plus lisible comme ça :
find . -type f -print0 | awk -F/ -vRS=' ' ' { nom=$NF chemin=$0 liste_chemins[nom] = liste_chemins[nom] $chemin "n" nombre_occurrences[nom]++ } END{ for (nom in nombre_occurrences) if (nombre_occurrences[nom] >= 2) print nom ":n" liste_chemins[nom] }'