Utiliser grep pour déplacer des fichiers, Mac

0

Je souhaite effectuer une recherche à l'aide de grep dans tous les fichiers d'un répertoire pour le motif '@ mail.ru>' (pour nettoyer le fouillis d'un polluposteur). À l'aide de la ligne de commande de Mac OS X, qui devrait ressembler à la plupart des installations de Linux, comment puis-je écrire la commande pour rechercher toutes les informations de ce modèle et les déplacer vers un autre répertoire appelé "suspects"? Merci!

Neil

Neil Ticktin
la source

Réponses:

0

Créez le suspectsdirectoy. Ensuite, essayez une commande comme:

mv $(grep -l '@mail.ru>' *) suspects 

Essayez la commande grep seule pour voir ce qu’elle trouvera. -loblige grep à lister les noms de fichiers correspondants. Cela ne fonctionnera que s'il n'y a pas d'espaces dans les noms de fichiers, ce qui devrait être le cas pour les fichiers courrier. Sinon, vous devriez envisager d'utiliser findou de modifier IFS pour exclure des espaces lors de l'exécution de la commande.

BillThor
la source
Utile - merci! Finalement, je suis allé avec ceci: grep -l -r -i -z '@ mail.ru [<>]' 2a | xargs -I {} mv {} 2a-ru où [<>} m'a donné le choix de <ou> à la fin de mail.ru (pour identifier le courrier incorrect). Et 2a était le dossier à rechercher, et 2a-ru était pour tout le courrier trouvé pour correspondre au modèle.
Neil Ticktin
Pour des raisons de sécurité, il serait bon d’ajouter -n/--no-clobberou -i/--interactivede mv. Par exemple, si vous ajoutez un -r à grep, ou si vous utilisez */*plutôt *, vous risquez de vous tromper ...
Volker Siegel