Es wurde versucht, ein bestimmtes Verzeichnis von einem grep-Befehl auszuschließen

0

Ich habe ein Verzeichnis, das Hunderte von Unterverzeichnissen enthält, deren Namen alle mit Datumsangaben versehen sind, und in jedem dieser Unterverzeichnisse gibt es eine Reihe von Dateien, die ich durchsuchen muss. Der grep-Befehl, den ich gerade verwende, ist folgender:

grep -ER --exclude-dir=2017060200_it2 "PATTERN" *_it2/file00*.pjson

und die Ordnerstruktur sieht so aus:

parcel/
    |--- 2015010100_it2/
        |--- file001.pjson
        |--- file002.pjson
        ...
        |--- file005.pjson
    |--- 2015010200_it2/
        |--- file001.pjson
        ...
    ...
    |--- 2017060200_it2/
        |--- file001.pjson
        |--- file002.pjson
        ...

Ich möchte, dass mein grep-Befehl sucht file00*.pjson für jedes einzelne Unterverzeichnis AUSSER für das neueste, in diesem Fall für 2017060200_it2. Allerdings ist mein --exclude-dir=2017060200 scheint dies nicht zu erreichen.

Ich verwende grep V2.20 auf einem CentOS 6.7-System und wenn ich es verwende grep --helpIch bekomme die Option für die Verwendung --exclude-dirDaher halte ich diese Informationen nicht für relevant.

Bonus: Wenn Sie mir zeigen könnten, wie ich das aktuelle Datum erhalte und es als formatiere yyyyMMdd00_it2 damit ich das zu einem cron job machen kann, wäre das großartig, aber ich hatte vor herauszufinden, wie ich das separat machen soll, sobald ich das zum Laufen gebracht habe.

phdumaresq
quelle

Antworten:

0

Ihr --exclude-dir ist korrekt, es hat nur Auswirkungen auf die Rekursion - aber Sie haben alle explizit angegeben *_it2 Verzeichnisse in der Datei glob, und das kommt vor einer Rekursion.

Ich schlage vor, mit find stattdessen - so etwas wie (ungetestet)

find . -name 2017060200_it2 -prune -name 'file00*.pjson' -execdir grep -E "PATTERN" {} \;

Bonus: date '+%Y%m%d00_it2'

Joe P
quelle
Super, hat sehr gut funktioniert! Musste den Befehl ein wenig ändern, aber das hat den Job gemacht! Ich danke dir sehr. Bonus: Der Date-Teil hat auch gut funktioniert, danke!
phdumaresq
In einem anderen Punkt habe ich das zum Arbeiten gebracht grep --exclude anstatt grep --exlude-dirIch hatte gedacht --exclude war für Dateien, aber ich denke, es geht nur um das rekursive Verhalten ...
phdumaresq