web-dev-qa-db-fra.com

Commande grep pour un fichier texte dans plusieurs répertoires

J'ai 24 répertoires dans un répertoire spécifique (répertoire principal). Chaque répertoire contient un fichier texte nommé DATA.txt.

Je dois utiliser la commande grep pour extraire ci-dessous un modèle spécifique pour chaque fichier texte;

2* x  = 3800689.6402     y  = 882077.3636     z  = 5028791.2953

2* x = part est constante pour tout DATA.txt. Les autres nombres numériques sont variables. J'ai besoin d'extraire la ligne ci-dessus pour chaque fichier DATA.txt et de les enregistrer dans un autre fichier texte. Quel script je peux utiliser pour ce processus?

4
deepblue_86

Pour effectuer une recherche récursive à l'aide de grepname__, utilisez l'option -R.

Pour rechercher une chaîne exacte, utilisez -F, afin que 2* ne soit pas traité comme une expression régulière.

Pour rechercher uniquement des noms de fichiers spécifiques, utilisez l'option --include. Combiné:

grep -FR --include=DATA.txt '2* x' main_directory > another_text_file
9
muru

Puisque vous connaissez le nom des fichiers cibles, vous pouvez aussi faire

grep '^2\* x' */DATA.txt > newfile

Ou, avec awk:

awk '^/2\* x/' */DATA.txt > newfile

Et Perl:

Perl -ne 'print if /2\* x/' */DATA.txt > newfile
5
terdon

Approche générale:

grep -r <pattern>

ou

approche spécifique:

find -name <file patterns which you want to find> | xargs grep <pattern you looking for>
1
404pio