GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden Sie grep, um Inhalte in Dateien zu finden und sie zu verschieben, wenn sie übereinstimmen

Das verwende ich in Fedora Core 12:

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

Wenn Sie Dateien suchen und verschieben möchten, die nicht Ihrem Muster entsprechen (Dateien verschieben, die 'Subject \[SPAM\]' nicht enthalten). in diesem Beispiel) verwenden Sie:

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

Das -Z bedeutet Ausgabe mit Nullen (\0) nach den Dateinamen (Leerzeichen werden also nicht als Trennzeichen verwendet).

xargs -0

bedeutet \0 als Trennzeichen zu interpretieren.

Das -L bedeutet, Dateien zu finden, die nicht dem Muster entsprechen. Ersetzen Sie -L mit -l wenn Sie Dateien verschieben möchten, die Ihrem Muster entsprechen.

Dann

-I{} mv {} DIR

bedeutet {} ersetzen mit den Dateinamen, so erhalten Sie mv filenames DIR .


Folgendes hat mir geholfen:

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

Natürlich war ich bereits im erforderlichen Ordner (deshalb ./ ) und in den benachbarten Ordner verschoben. Sie können sie jedoch in beliebige Pfade ändern.

Ich weiß nicht, warum die akzeptierte Antwort nicht funktioniert hat. Außerdem hatte ich keine Leerzeichen und Sonderzeichen in Dateinamen - vielleicht funktioniert das nicht.

Hier gestohlen:Grep-Befehl, um Dateien zu finden, die eine Textzeichenfolge enthalten, und sie zu verschieben


Diese Alternative funktioniert, wenn xargs nicht verfügbar ist:

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

Linux
  1. So verwenden Sie den Grep-Befehl, um Text in Dateien zu finden

  2. Wie finde ich mehrere Zeichenfolgen in Dateien?

  3. Verwenden Sie Find and Locate, um unter Linux nach Dateien zu suchen

  4. Wie durchsuche ich Verzeichnisse und finde Dateien, die mit Regex übereinstimmen?

  5. Wie listet man Dateien rekursiv auf und sortiert sie nach Änderungszeit?

Find-Befehl in Linux (Dateien und Verzeichnisse suchen)

Grep-Befehl in Linux (Text in Dateien suchen)

So verwenden Sie sed zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So finden Sie doppelte Dateien in Linux und entfernen sie

Finden Sie Dateien und Verzeichnisse unter Linux ganz einfach

Finden Sie Text in Dateien unter Linux mit grep