OVH Cloud OVH Cloud

Recherche de fichiers de meme nom

3 réponses
Avatar
Iris Pallida
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...

Iris

3 réponses

Avatar
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]}'

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Avatar
Iris Pallida
Le Fri, 31 Oct 2003 10:05:03 +0100, Stephane Chazelas a écrit :

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]}'


Merci beaucoup ! Je suis très impressionnée.

Iris, épatée

Avatar
Stephane Chazelas
2003/10/31, 12:19(+01), Iris Pallida:
Le Fri, 31 Oct 2003 10:05:03 +0100, Stephane Chazelas a écrit :

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]}'


Merci beaucoup ! Je suis très impressionnée.


Et encore, je me suis retenu, j'aurais pu écrire :

find . -type f -print0| perl -lF/ -0ane'push@{$a{$F[-1]}},$_}{
$"=$;print"n$_:n@{$a{$_}}"for sort grep{@{$a{$_}}>1} keys%a'

voire (zsh 4):

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]
}'

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]