Ceci est une ancienne révision du document !
Trouver et remplacer des informations
Chercher une info dans un tas de log dans un dossier et sortir les résultats dans un fichier à part :
grep -i -e "Recherche" log_NAME*.txt > nomfichier.txt
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 "Recherche" > nomfichier.txt
Pour chercher une info et afficher son contexte, ici les 5 phrases avant/après, ajouter l'option –context=5
. C'est évidement surtout utile sur une occurrence en particulier (pour éviter d'ouvrir tout le fichier), pas lors de la recherche globale.
Pour chercher une chaîne de caractères uniquement dans les fichiers d'une certaine extension (pour l'exemple les fichiers .txt) :
find . -type f -iname '*.txt' -exec grep -i "recherche" {} \;
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'échappement \ parfois nécessaire, entre autre devant [ :
find . -type f -exec sed -i 's#ORIGINE#REMPLACANT#g' {} \;
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 '[:upper:]' '[:lower:]'`; done
Puis dans les noms de fichiers :
find . -type f|while read f; do mv $f `echo $f |tr '[:upper:]' '[:lower:]'`; done
Fichiers trop longs
Dans le cas des fichiers de log trop longs, que grep et les éditeurs de texte n'arrivent plus à lire (erreurs variées), on découpe le fichier en plusieurs morceaux.
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/part.