Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
pratique:informatique:recherche [23/02/2015 13:48] – modification externe 127.0.0.1 | pratique:informatique:recherche [11/08/2023 08:53] (Version actuelle) – [Avec grep] Zatalyz | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Trouver et remplacer des informations ====== | ====== Trouver et remplacer des informations ====== | ||
+ | ===== Avec grep ===== | ||
Chercher une info dans un tas de log dans un dossier et sortir les résultats dans un fichier à part : | Chercher une info dans un tas de log dans un dossier et sortir les résultats dans un fichier à part : | ||
Ligne 6: | Ligne 7: | ||
Mais pour du récursif j'ai pas encore trouvé bien probant. Celle-ci marche mais va chercher dans tous les types de fichiers. | Mais pour du récursif j'ai pas encore trouvé bien probant. Celle-ci marche mais va chercher dans tous les types de fichiers. | ||
grep -nri " | grep -nri " | ||
+ | |||
+ | Si les dossiers sont de même profondeur (cas des logs), ceci peut marcher : | ||
+ | grep -nri " | ||
+ | |||
+ | Autres options sympas de grep : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Pour afficher seulement les fichiers où apparait ce qu'on cherche, c'est '' | ||
+ | grep -lri " | ||
+ | ===== Avec find ===== | ||
+ | |||
+ | Pour chercher une chaîne de caractères uniquement dans les fichiers d'une certaine extension (pour l' | ||
+ | find . -type f -iname ' | ||
Pour remplacer une chaîne de caractère dans des tas de fichier (ORIGINE) par une autre chaîne de caractère (REMPLACANT) et de façon récursive. Caractère d' | Pour remplacer une chaîne de caractère dans des tas de fichier (ORIGINE) par une autre chaîne de caractère (REMPLACANT) et de façon récursive. Caractère d' | ||
find . -type f -exec sed -i ' | find . -type f -exec sed -i ' | ||
+ | |||
+ | |||
+ | Pour transformer les majuscules en minuscules (grâce à //tr//) dans les noms de dossier (à faire plusieurs fois pour le récursif ? : | ||
+ | find . -type d|while read d; do mv $d `echo $d |tr ' | ||
+ | |||
+ | Puis dans les noms de fichiers : | ||
+ | find . -type f|while read f; do mv $f `echo $f |tr ' | ||
+ | |||
+ | |||
+ | ===== Fichiers trop longs ===== | ||
+ | Dans le cas des fichiers de log trop longs, que grep et les éditeurs de texte n' | ||
+ | |||
+ | On créé un dossier où mettre les morceaux, puis on coupe toutes les 1000 lignes : | ||
+ | |||
+ | mkdir canal.log.d | ||
+ | split -l 10000 \#canal.log canal.log.d/ | ||
+ | |||