Nous avons actuellement une série de fichiers classés par date, par type, puis des fichiers XML individuels contenant des détails, avec la structure de base suivante :
2020-01-01/
FR_abc
FR_abc_datetime_random.xml
FR_abc_datetime_random.xml
...
FR_abc_datetime_random.xml
FR_def
FR_def_datetime_random.xml
FR_def_datetime_random.xml
...
FR_def_datetime_random.xml
FR_ghi
FR_ghi_datetime_random.xml
FR_ghi_datetime_random.xml
...
FR_ghi_datetime_random.xml
...
FR_xyz
FR_xyz_datetime_random.xml
FR_xyz_datetime_random.xml
...
FR_xyz_datetime_random.xml
Ce système de fichiers est élagué fréquemment, mais nous avons souvent entre 120 et 150 millions de fichiers dans la structure. Parfois, nous aurons besoin d'interroger l'un des fichiers et parfois nous connaîtrons la date que nous devons regarder, et parfois non. Si nous savons quelles dates nous recherchons, nous utilisons une commande simple pour inspecter le texte que nous recherchons avec :
ls -U | xargs grep -l TEXT
Ce qui liste les fichiers avec le TEXTE spécifique que nous pouvons ensuite interroger manuellement.
Si nous connaissons le type de fichier et le texte à rechercher, j'utilise actuellement la commande find, donc :
find . -type f -name "^FR_ghi*" | xargs grep -l TEXT
Les autres membres du groupe utilisent la commande ls avec un drapeau récursif (-R).
Avec ces commandes, la recherche prend beaucoup de temps, plus d'une journée. Je me demandais si quelqu'un connaissait un moyen d'accélérer cette recherche, ou des commandes de remplacement permettant d'obtenir un temps de réponse plus rapide ?
-- edit1 --
Le paramètre TEXT peut être n'importe où dans le fichier, et ces fichiers sont sur une boîte de production, donc j'hésiterais à ajouter un autre processus sur cette boîte car ces requêtes sont ad-hoc et je suppose que ma question initiale est plus "faisons-nous cela de la bonne façon / quelqu'un a-t-il une meilleure façon" ?