2009-03-11 8 views
3
ls -ltr|grep 'Mar 4'| awk '{print $9 }'|zcat -fq |grep 12345 

Je veux trouver tous les fichiers modifiés à une certaine date, puis les zapper et rechercher une chaîne numérique dans les champs. Ce qui précède ne fonctionne pas car il recherche le nom de fichier de la chaîne et non le fichier lui-même.zcat pipe to grep

Une aide?

M

Répondre

1

Essayez d'utiliser find à la place. Et/ou xargs.

2

Utilisez xargs pour exécuter le grep sur la sortie filenames par awk:

ls -ltr | grep 'Mar 4' | awk '{print 9}' | xargs zcat -fq | grep 12345 

Ou, je suppose, courir le reste du tuyau de awk lui-même.

1

Si je lis correctement votre ligne de commande, c'est son zcat qui tente de décompresser les noms de fichiers au lieu de leur contenu. Utilisez xargs pour résoudre ce:

ls -ltr|grep 'Mar 4'| awk '{print $9 }'|xargs zcat -fq |grep 12345 
0

En plus des belles réponses sur l'utilisation xargs ou find, vous pouvez également vous débarrasser d'un processus supplémentaire en éliminant zcat et de la tuyauterie à zgrep ou grep -Z à la place.

+0

Sur mon système (OS X), grep -Z ne fait pas ce que vous croyez. –

+0

Apparemment, pas sur le Linux que j'ai à portée de main, soit. Oops. zgrep est le meilleur choix, alors. – dwc