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 [17/05/2024 20:08] (Version actuelle) – [Avec find] 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 ' | ||
| + | |||
| + | Chercher seulement un fichier précis, quelque part : | ||
| + | find /chemin/ -iname < | ||
| + | |||
| + | On ajoute '' | ||
| + | find /chemin/ -type f -iname machin.txt | ||
| + | ===== 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/ | ||
| + | |||