Faire une recherche sur un liste de noms de fichiers

Faire une recherche sur un liste de noms de fichiers - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 04-11-2014 à 11:12:04    

Bonjour,
 
Je suis dans une arborescence assez lourde avec beaucoup de répertoires et fichiers, et je dois chercher des choses dans une liste de fichier (318 pour être exact) dont j'ai les noms (unique dans toute l'arborescence) et qui sont dans des répertoires différents
 
Pour l'instant j'ai ma liste de noms de fichier dans un fichier plat.
Comment je fais en gros pour transformer mon fichier plat en un ls sur lequel je peux faire un grep derrière ?
 
merci.
 

Reply

Marsh Posté le 04-11-2014 à 11:12:04   

Reply

Marsh Posté le 04-11-2014 à 11:18:55    

Si le fichier est unique un script qui lit ton fichier et utilise find avec :
 - l'option -iname pour trouver le fichier que tu recherches
 - l'option -exec pour faire le grep ou pipe ton find dans un grep
cf. man find


Message édité par o'gure le 04-11-2014 à 11:23:02

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 04-11-2014 à 11:22:59    

ok merci donc il y a pas d'autre solution que de transformer mon fichier plat en un gros find avec tous les noms de fichiers à la suite ?
 
bon bah ça va être chiant mais go.

Reply

Marsh Posté le 04-11-2014 à 11:36:14    

J'ai fait mon edit en même temps que ton post.
Tu fais un script avec une boucle qui lit ton fichier, pour chaque nom de fichier il va automatiquement construire la commande find qui va bien.
Ca prendra du temps, mais le taf sera fait.


Message édité par o'gure le 04-11-2014 à 11:36:56

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 04-11-2014 à 11:38:41    

Après y a d'autre solution plus optimisée, mais ça requiert un peu plus de scripting.
1. Faire un find complet de ton arborescence et le redirigé dans un fichier texte => ça te crée un index de ton arborescence
2. une boucle qui pour chaque nom de fichier va faire un grep dans ton index pour avoir le chemin entier
3. faire le grep


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 04-11-2014 à 11:42:20    

Merci mais trop tard j'ai fais mon gros
 
 

Code :
  1. find . -name 'toto' -o -name 'tata' -o -name ...


 
ça fait le boulot  :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed