Rechercher des caractères dans des fichiers
Gawouelle
-
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 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:
- Rechercher des caractères dans des fichiers
- Renommer des fichiers en masse - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères spéciaux - Guide
- Lire des fichiers epub - Guide
- Rechercher ou entrer l'adresse - Guide
7 réponses
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.
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.
Voici un lien qui peut peut-être vous être utile :
www.funix.org/fr/unix/grep-find.htm
Bonne Recherche.
www.funix.org/fr/unix/grep-find.htm
Bonne Recherche.
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.
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.
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 ???
Dans test.txt tu n'as pas de fichiers autre que txt et bat ???
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
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
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