Frage

Ich arbeite an einem Python-Programm, das starken Gebrauch von Eiern (Plone) macht. Das heißt, es sind 198 Verzeichnisse voll von Python-Code Ich möchte vielleicht durch suchen während des Debuggens. Gibt es eine gute Möglichkeit, nur die Py-Dateien nur in den Verzeichnissen zu suchen, nicht verwandten Code und große binäre Dateien zu vermeiden?

War es hilfreich?

Lösung

find DIRECTORY -name "*.py" | xargs grep PATTERN

By the way, das seit schreiben, habe ich entdeckt, ack , die eine viel bessere Lösung ist.

(Und seit dieser bearbeiten, ich habe ag entdeckt).

Andere Tipps

würde ich dringend empfehlen ack , ein grep Ersatz „an Programmierer richtet mit großen Bäumen heterogener Quellcode“ ( von der Website)

grep -r -n "PATTERN" --include="*.py" DIRECTORY

ich auch ack viel nutzen in diesen Tagen. Ich habe zwicken sie ein wenig alle relevanten Dateitypen zu finden:

# Add zcml to the xml type:
--type-add
xml=.zcml

# Add more files the plone type:
--type-add
plone=.dtml,.zpt,.kss,.vpy,.props

# buildout config files
--type-set
buildout=.cfg

# Include our page templates to the html type so we can limit our search:
--type-add
html=.pt,.zpt

# Create txt file type:
--type-set
txt=.txt,.rst

# Define i18n file types:
--type-set
i18n=.pot,.po

# More options
--follow
--ignore-case
--nogroup

Wichtig zu erinnern ist, dass ack keine Dateien finden, wenn die Erweiterung nicht in seiner Konfiguration ist. Siehe "ack --help-Typen" für alle verfügbaren Typen.

Ich gehe davon aus auch verwenden Sie Omelett so Sie können grep / ack / finden alle zugehörigen Dateien?

Dieses Problem war die Motivation für die Schaffung von collective.recipe.omelette. Es ist ein buildout Rezept, das alle Eier Symlink aus Ihrem Arbeits in eine Verzeichnisstruktur festgelegt, mit dem Sie Ihre Lieblings-Suchprogramm auf verweisen.

find <directory> -name '*.py' -exec grep <pattern> {} \;

Es gibt auch GNU idutils wenn Sie möchten, für grep Identifikatoren in einem großen Quellbaum sehr sehr schnell. Es erfordert eine Suchdatenbank im Voraus erstellen, durch MKID läuft (und seine Konfigurationsdatei zwicken nicht Py-Dateien zu ignorieren). z3c.recipe.tag kümmert sich darum, wenn Sie buildout verwenden.

Für den Fall, Sie wollen eine nicht-Kommandozeilen-OSS-Lösung ...

Ich verwende PyCharm. Es wurde Unterstützung für buildout gebaut. Sie zeigen es an einem buildout erzeugt ist / Instanz und setzen die Projekte externe Abhängigkeiten auf alle von der Instanz verwendeten Eier. Da standen alle IDE Selbstbeobachtung und Code-Navigation Arbeit gut. Gehe zu Definition, gehe zu Instanzen, Refactoring-Unterstützung und natürlich suchen.

Ich empfehle Grinsen zu suchen, Omelette , wenn sie mit plone und das pydev-Feature 'Globals Browsers (mit eclipse oder Aptana Studio).

Und nur weil es nicht genug Antworten ...

Wenn Sie regelmäßig entwickelst, es ist die Mühe wert Eclipse Pydev zu installieren (oder noch einfacher, Aptana Studio - die eine modifizierte Eclipse ist)., Wobei die Funde Werkzeuge rechts gibt es

Mein greppen Leben ist viel befriedigender, da rgrep Befehl Emacs zu entdecken.

Sagen möchte ich finden ‚IPortletDataProvider‘ in Plones Quelle. Ich tue:

  1. M-x rgrep
  2. Emacs fragt nach dem Suchbegriff (IPortletDataProvider)
  3. ... dann, welche Dateien suchen (* Py)
  4. ... dann das Verzeichnis (~ / Plone / buildout-Cache / Eier). Wenn ich bereits eine Datei bearbeiten, wird standardmäßig auf diese Datei des Verzeichnisses, die in der Regel genau das, was ich will.

Die Ergebnisse in einem neuen Puffer erscheinen. An der Spitze ist der find | xargs grep Befehl Emacs liefen. Alle Spiele werden hervorgehoben. Ich kann den Puffer suchen, um die Standard-Textsuche-Befehle. Best of all, kann ich drücken Sie die Eingabetaste (oder klicken) auf ein Spiel, dass die Datei zu öffnen.

Es ist eine ziemlich nette Art und Weise zu arbeiten. Ich mag, dass ich habe nicht find | xargs grep Argument Sequenzen zu erinnern, aber dass alles, was Macht ist, wenn ich es brauche.

Emacs rgrep Beispiel

OpenGrok ist eine ausgezeichnete Wahl für Quelle Suche und Navigation. Läuft auf Java, aber.

Ich wünschte wirklich, es war so etwas wie http://opengrok.plone.org/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top