Rechercher et remplacer en utilisant xargs sed - puis-je enregistrer les résultats dans un fichier?

Mon code pour remplacer toutes les occurrences de " foo " par "bar":

find . -type f |
xargs grep 'foo' -l |
xargs sed -i 's|foo|bar|g'

Je voudrais enregistrer la liste des fichiers modifiés dans un document texte. Est-il possible?

EDIT :

C'est le code final qui a fonctionné pour moi :

find . -type f -print0 |
xargs -0 grep 'foo' -l |
tee result.txt |
xargs -0 sed -i 's|foo|bar|g'

Pas sûr de savoir si c'est le moyen le plus rapide, mais pour quelques milliers de fichiers à la différence de vitesse entre la ce et les autres méthodes proposées est probablement très faible.

Pourquoi ne pas tester la synchronisation avec un petit sous-ensemble - pas trop petit, mais peut-être quelque chose qui fonctionne pour une minute? Je ne m'attends pas à de trop grandes différences, si vos données n'est pas quelque peu atypique. Mais votre code suivant ne fonctionnera pas avec des noms de fichiers contenant des espaces, tabulations, retours à la ligne et la comme. Êtes-vous sûr que vos fichiers ne contiennent pas de telles choses?
Suite à vos commentaires, j'ai modifié le code ci-dessus à l'aide de print0 et -0
oui, mais en utilisant xargs et similaires et les méthodes de traitement par lot est sûrement une bonne pratique pour quand votre argument de taille dépasse la ligne de commande limite, il y a des espaces ou non typique de caractères dans le nom (print0) ou il y a un risque d'un grand nombre de processus (exec) en cours de fourche au lieu de lots.

OriginalL'auteur Lewis | 2012-01-31