GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisez grep pour rechercher du contenu dans des fichiers et les déplacer s'ils correspondent

C'est ce que j'utilise dans Fedora Core 12 :

grep -l 'Subject: \[SPAM\]' | xargs -I '{}' mv '{}' DIR

Si vous souhaitez rechercher et déplacer des fichiers qui ne correspondent pas à votre modèle (déplacez les fichiers qui ne contiennent pas 'Subject \[SPAM\]' dans cet exemple) utilisez :

grep -L -Z -r 'Subject: \[SPAM\]' . | xargs -0 -I{} mv {} DIR

Le -Z signifie une sortie avec des zéros (\0) après les noms de fichiers (les espaces ne sont donc pas utilisés comme délimiteurs).

xargs -0

signifie interpréter \0 comme des délimiteurs.

Le -L signifie trouver les fichiers qui ne correspondent pas au modèle. Remplacer -L avec -l si vous souhaitez déplacer des fichiers correspondant à votre modèle.

Alors

-I{} mv {} DIR

signifie remplacer {} avec les noms de fichiers, vous obtenez donc mv filenames DIR .


Voici ce qui m'a aidé :

grep -lir 'spam' ./ | xargs mv -t ../spam

Bien sûr, j'étais déjà dans le dossier requis (c'est pourquoi ./ ) et les a déplacés vers le dossier voisin. Mais vous pouvez les remplacer par n'importe quel chemin.

Je ne sais pas pourquoi la réponse acceptée n'a pas fonctionné. De plus, je n'avais pas d'espaces et de caractères spéciaux dans les noms de fichiers - peut-être que cela ne fonctionnera pas.

Volé ici :commande Grep pour rechercher des fichiers contenant une chaîne de texte et les déplacer


Cette alternative fonctionne là où xargs n'est pas disponible :

grep -L -r 'Subject: \[SPAM\]' . | while read f; do mv "$f" out; done

Linux
  1. Trouver un modèle et déplacer ?

  2. Utiliser la commande Grep et localiser ?

  3. Utilisez Rechercher pour trouver certains répertoires et supprimer tous les fichiers qu'il contient sauf un répertoire ?

  4. Comment trouver plusieurs chaînes dans des fichiers ? ?

  5. Rechercher et copier des fichiers

Rechercher la commande sous Linux (Rechercher des fichiers et des répertoires)

Commande Grep sous Linux (Rechercher du texte dans des fichiers)

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

Comment trouver des fichiers en double sous Linux et les supprimer

Trouvez facilement des fichiers et des répertoires sur Linux

Rechercher du texte dans des fichiers sous Linux à l'aide de grep