Je me demandais au cas où je pourrais faire ce qui suit, mieux que ce que j'ai. Objectif: Identifier les fichiers portant le même nom dans l'arborescence de répertoires. Je n'ai aucune connaissance s'il y aurait un fichier en double ou l'emplacement/nom de tels fichiers.trouver des fichiers avec les mêmes noms dans le répertoire
Sortie attendue: Répertorie les fichiers avec l'emplacement.
Entrée fournie: chemin du répertoire principal pour la recherche.
Mon algorithme:
1.list tous les fichiers dans le répertoire cible (je l'ai utilisé find -name "")
2.List1: trier les noms de fichiers
3.List2 : fichiers Uniquify noms
listes de 4.Diff de l'étape 2 & 3 pour obtenir le fichier répété
5.extract l'emplacement.
Sample Directory:
temp/
|-- d1
| |-- d2
| | `-- f3
| |-- d3
| | `-- f3
| |-- f1
| `-- f2
`-- d4
|-- d5
| |-- f2
| `-- f6
|-- f4
`-- f5
> find temp/ -type f -follow -print | sed 's;.*/;;' | sort -u > ~/tmp/12
> find temp/ -type f -follow -print | sed 's;.*/;;' | sort -n > ~/tmp/11
> diff ~/tmp/11 ~/tmp/12
3,4d2
< f2
< f3
> find temp/ -name f2
temp/d1/f2
temp/d4/d5/f2
> find temp/ -name f3
temp/d1/d2/f3
temp/d1/d3/f3
Je veux simplifier ce processus. Toute aide serait appréciée. S'il vous plaît laissez-moi savoir au cas où vous avez besoin de plus de détails.
Vous pouvez ajouter 'uniq -d' après (ou à la place de) votre tri qui peut vous aider à ne faire correspondre que des doublons. Vous pouvez également regarder la commande linux 'tree' pour la sortie formatée que vous montrez. Là vous pouvez être capable d'exécuter 'tree' sur' dir1' 'dir2' en écrivant la sortie en ** tmp ** et ensuite utiliser grep pour localiser les doublons. Juste une pensée pour une approche différente. Ce que vous avez ne ressemble pas à un mauvais départ. –
Je cherche une méthode où je pourrais éviter les fichiers tmp si possible, car le répertoire cible peut ne pas avoir d'autorisation en écriture. – user1495523