Rechercher des caractères dans des fichiers

Gawouelle -  
 Gawouelle -
Bonjour,

A la racine de mon disque j'ai environ 500 dossiers, dans chacun des dossiers se trouve 1 sous dossier nommé DIVERS(dans lequel il y a un répertoire nommé VRAC, 1 autre nommé URBA, 1 autre COMME et de temps en temps 1 autre nommé SAISIES) ; et 1 sous dossier nommé AUTRE

J'ai besoin d'analyser le contenu des fichiers présents dans le répertoire SAISIES (s'il existe) et de trouver ceux qui contiennent la chaine de caractères "PC 038". J'ai besoin de déplacer ensuite ces fichiers dans le dossier \DIVERS\URBA.

J'ai trouvé 2commandes : find ou grep, je ne sais pas laquelle utiliser et surtout comment ?!!

Si quelq'un peut m'aider
Merci

A voir également:

7 réponses

remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   6
 
tu peux utiliser les deux comme suit:

find /ton/répertoire -name "*" -exec grep -Hn "ta chaine recherché" {} \;

Avec ça tu peux déjà trouver tous les fichiers du répertoire choisi qui contiennent ta chaine recherché.

Ensuite tu n'a plus qu'à déplacer ces fichiers dans ton dossier.

Pour cela tu peux stocker les résultats du find dans un fichier txt et ensuite tu te fais un script qui lis les lignes de ton fichier que tu place dans un mv.
0
hkaab
 
Voici un lien qui peut peut-être vous être utile :
www.funix.org/fr/unix/grep-find.htm

Bonne Recherche.
0
Gawouelle
 
Quand je tape la commande
find /ton/répertoire -name "*" -exec grep -Hn "ta chaine recherché" {} \;

et que je le fait afficher dans un fichier, ça m'affiche uniquement la liste des fichiers .txt et des .bat (alors que les fichiers que je recherchent sont des .doc ou des .odt), sans tenir compte de la chaine de caractère.
0
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   6
 
tu veux dire que lorsque tu fais juste find /ton/rep/ -name "*" >> test.txt

Dans test.txt tu n'as pas de fichiers autre que txt et bat ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   6
 
le "/ton/répertoire" correspond à ton répertoire où tu veux scanner les fichiers en questions et non pas le répertoire de destination ou autre tu ne t'es pas trompé en le renseignant ?
0
Gawouelle
 
oui oui j'ai bien écris le répertoire que je voulais scanner.

Et c'est en écrivant la totalité de la commande (find /ton/répertoire -name "*" -exec grep -Hn "ta chaine recherché" {} \; ) > test.txt que j'ai uniquement les fichiers .bat et .txt

Surtout que ceux qui contiennent la chaine de caractères que je recherche sont soit des .doc soit des .odt
0
Gawouelle
 
J'ai mis exactement :
(find "%%d\DIVERS\SAISIES" -name "*" -exec grep -Hn "PC 038" {}\; ) >test.txt
0