#1 Le 03/06/2012, à 22:56
- cledesol
[Résolu] grep et nom de fichier avec espace
Après bien des recherches et essais infructueux, je me décide à demander votre aide.
J'ai écrit le simple code suivant :
#!/bin/bash
code=51094100257
for f in `find . -type f`
do
if grep -q $code "${f}"
then
echo "$f : Found $code"
fi
done
Mon but est d'afficher le nom des fichiers contenant le "code".
Cela marche bien sauf pour les fichiers dont le nom comporte un espace: la ligne "if grep -q ....." me retourne un message
comme quoi le fichier n'existe pas, car le nom du fichier est décomposé en autant de morceaux qu'il y a d'espace.
J'ai essayé d'écrire "$f" et autre syntaxes plus ou moins tordues: rien à faire; je ne parvient pas à lui faire prendre le nom du fichier comme une entité.
Avez-vous une idée sur la façon de résoudre ce problème ?
Merci d'avance pour vos conseils
Dernière modification par cledesol (Le 04/06/2012, à 20:59)
Bon, eh bien je vais partir en Théorie parce qu'en Théorie, tout se passe bien ....
Hors ligne
#2 Le 03/06/2012, à 23:41
- Postmortem
Re : [Résolu] grep et nom de fichier avec espace
Salut,
Essaie comme ceci :
#!/bin/bash
code=51094100257
while read -rd ''
do
if grep -q "$code" "$REPLY"
then
echo "$REPLY : Found $code"
fi
done < <(find . -type f -print0)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#3 Le 04/06/2012, à 13:59
- dev/random
Re : [Résolu] grep et nom de fichier avec espace
Mon but est d'afficher le nom des fichiers contenant le "code".
pas besoin de shell, grep sait faire:
grep -l -R "code" *
667, the neighbour of the beast..
Hors ligne
#4 Le 04/06/2012, à 18:43
- Postmortem
Re : [Résolu] grep et nom de fichier avec espace
cledesol a écrit :Mon but est d'afficher le nom des fichiers contenant le "code".
pas besoin de shell, grep sait faire:
grep -l -R "code" *
Ah oui, je zape à chaque fois le -R de grep !
Petite précision néanmoins, pour que ça prenne en compte les fichiers/répertoires cachés, faut remplacer * par . :
grep -l -R "code" .
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#5 Le 04/06/2012, à 20:59
- cledesol
Re : [Résolu] grep et nom de fichier avec espace
OK. Je ne connaissait pas l'option -R de grep !!!
Merci beaucoup pour ce coup de main. Je passe le sujet en résolu
Bon, eh bien je vais partir en Théorie parce qu'en Théorie, tout se passe bien ....
Hors ligne
#6 Le 10/06/2012, à 07:10
- nesthib
Re : [Résolu] grep et nom de fichier avec espace
pour allier les possibilités de recherche de find et grep on peut aussi utiliser l'argument -exec de find :
par exemple le code suivant affichera les import des fichiers exécutables python de /my/dir (toutes les conditions sont importantes)
find /my/dir -executable -type f -iname *.py -exec echo -e "\n{}" \; -exec grep import {} \;
et créera la sortie suivante :
/my/dir/fichier1.py
import os
import sys
/my/dir/subdir/fichier2.py
from abc import xyz
…
cela peut réduire significativement le temps de recherche si le dossier à parcourir est grand et que le motif ne doit être recherché que dans un type particulier de fichiers
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne