Suche in Dateien und Liste erstellen?

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
malo.conny
Junior Member
Junior Member
Posts: 28
Joined: 2005-03-11, 09:45 UTC

Suche in Dateien und Liste erstellen?

Post by *malo.conny »

Ich suche in einem Ordner mit ca. 1800 PHP-Dateien nach "function" und bekomme auch das Ergebnis, wo es diesen String überall gibt.
Besteht aber die Möglichkeit auszuleiten, wie oft dieser String gefunden wurde, so dass ich weis, wie viele Funktionen in allen Dateien vorhanden sind?
Vielen Dank schon jetzt für eine Hilfe.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50768
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Nein, TC sucht nur bis zur ersten Fundstelle, nicht alle Fundstellen.
Author of Total Commander
https://www.ghisler.com
CSL
Senior Member
Senior Member
Posts: 286
Joined: 2007-12-05, 07:19 UTC
Location: Karlsruhe
Contact:

Post by *CSL »

dazu faellt mir etwas ein
wenn ich dateien durchsuchen lass - dauerts je nach anzahl entsprechend
wenn ich darauf hin nochmal mit dem selben string durchsuche dauerts nur noch ein paar millisekunden
ist das ergebnis dann aus nem cache ? ist es ueberhaupt noch verwertbar?
ich hab naemlich in dateien gesucht - nichts gefunden - die dateien neu aus perforce ausgecheckt {sie wurden auch definitiv geaendert} und dann nochmal gesucht
das ergebnis kahm wieder so extrem schnell - wundert mich irgendwie
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Suche in Dateien und Liste erstellen?

Post by *Stefan2 »

malo.conny wrote:Ich suche in einem Ordner mit ca. 1800 PHP-Dateien nach "function" und bekomme auch das Ergebnis, wo es diesen String überall gibt.
Besteht aber die Möglichkeit auszuleiten, wie oft dieser String gefunden wurde, so dass ich weis, wie viele Funktionen in allen Dateien vorhanden sind?
> wie viele Funktionen in allen Dateien vorhanden sind?
Darf's ein bisschen Un*x sein?

C:\MyPHPFiles>grep -c function *.php |awk -F: "{sum += $2}; END {print sum}"


Usage: grep [OPTION]... PATTERN [FILE]...
-c, --count print only a count of matching lines per FILE
-R, -r, --recursive

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
-F fs --field-separator=fs (hier der : vom GREP Output)
Examples:
gawk '{ sum += $1 }; END { print sum }' file
malo.conny
Junior Member
Junior Member
Posts: 28
Joined: 2005-03-11, 09:45 UTC

Post by *malo.conny »

@Stefan2: Danke, aber wie kann ich denn unter Windows das Kommando ausführen? Kann ich diesen einfach in die Kommandozeile von TC ausführen und wie sorge ich dann dafür, dass das Ergebnisfenster sichtbar bleibt?

Vielen Dank!

Update: habe nun mit UnxUtils gemacht, allerdings suche ich dann nicht in Unterordnern, was aber gehen muss.
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

malo.conny wrote:@Stefan2: Danke, aber wie kann ich denn unter Windows das Kommando ausführen?
Native Win32 ports of some GNU utilities http://unxutils.sourceforge.net/
UNIX coreutils-5.3.0 http://gnuwin32.sourceforge.net/packages/
UNIX Berkeley Utilities 12.Feb.2001 http://openetwork.com/berk.html

------------------------------------

malo.conny wrote:Kann ich diesen einfach in die Kommandozeile von TC ausführen
und wie sorge ich dann dafür, dass das Ergebnisfenster sichtbar bleibt?
> wie sorge ich dann dafür, dass das Ergebnisfenster sichtbar bleibt?
mit dem CMD Parameter /k, siehe weiter unten.

> einfach in die Kommandozeile von TC ausführen
Weiß ich nicht genau, ich öffne eher eine DOS-Box im aktuellen Verzeichnis mit Strg+o


Solche DOS Befehle kann man z.B: in die UserCmd.ini reinschreiben
oder direkt in einem Button aufnehmen.

Z.B. in der USERCMD.INI

[em_CountPHP]
cmd=%comspec% /k
Param=?grep -c function *.php |awk -F: "{sum += $2}; END {print sum}"

Siehe auch C:\>cmd /?
/C Führt den Befehl in der Zeichenfolge aus und endet dann.
/K Führt den Befehl in der Zeichenfolge aus und endet dann nicht.
Das habe ich jetzt nicht durchgetestet... aber so ähnlich sollte es gehen.
Diese UNIX-Tools müssen im Suchpfad sein, oder deren Aufruf muss mit Pfad ergänzt werden.

Durch das ? Fragezeichen bei Param= wird einem das Kommandofenster vor der Ausführung angezeigt, sodass man noch Änderungen vornehemen könnte.

Nimm mal "UserCmd.ini", "comspec" und "em_ command" als Suchbegriff hier im Forum für weitere Infos.

------------------------------------
malo.conny wrote:Update: habe nun mit UnxUtils gemacht, allerdings suche ich dann nicht in Unterordnern, was aber gehen muss.
Ruf mal das Tool mit der Hilfefunktion auf: z.B. GREP --help
"Mein" GREP hat solch einen Parameter : -R, -r, --recursive


Ich habe diese Versionen benutzt (ohne Wertung)
C:\>grep --version
GNU grep 2.5.3
Copyright (C) 1988, 1992-2002, 2004, 2005 Free Software Foundation, Inc.


C:\>awk --version
GNU Awk 3.1.6
Copyright (C) 1989, 1991-2007 Free Software Foundation.


HTH?


------------

BTW:

Man kann sich auch nur die Vorkommen pro Datei anzeigen lassen
C:\MyPHPFiles>grep -r -c function *.php

Der AWK Befehl zählt dann alle Ergebnis des GREP-Kommandos zusammen
C:\> <grep befehl> pipe | awk -F: "{sum += $2}; END {print sum}"

Man kann auch das Ergebnis dieser Kommandos in eine Textdatei umleiten:
C:\MyPHPFiles>grep -r -c function *.php |awk -F: "{sum += $2}; END {print sum}" >C:\Temp\Ergebnis.txt
malo.conny
Junior Member
Junior Member
Posts: 28
Joined: 2005-03-11, 09:45 UTC

Post by *malo.conny »

Vielen Dank für die Hinweise. Damit ist es gelungen:
grep -r -c function * |sed -e "/\.svn/d" |gawk -F: "{sum += $2}; END {print sum}"
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Schön!
Danke für's Feedback ;-)
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Mr Evil wrote:dazu faellt mir etwas ein
wenn ich dateien durchsuchen lass - dauerts je nach anzahl entsprechend
wenn ich darauf hin nochmal mit dem selben string durchsuche dauerts nur noch ein paar millisekunden
ist das ergebnis dann aus nem cache ? ist es ueberhaupt noch verwertbar?
...
Dieses Thema ist noch unbeantwortet - interessiert mich auch.

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
versalzen
Power Member
Power Member
Posts: 670
Joined: 2003-09-16, 11:52 UTC
Location: kölle, linksrheinisch.

Post by *versalzen »

Peter wrote:
Mr Evil wrote:dazu faellt mir etwas ein
wenn ich dateien durchsuchen lass - dauerts je nach anzahl entsprechend
wenn ich darauf hin nochmal mit dem selben string durchsuche dauerts nur noch ein paar millisekunden
ist das ergebnis dann aus nem cache ? ist es ueberhaupt noch verwertbar?
...
Dieses Thema ist noch unbeantwortet - interessiert mich auch.

Peter
nun, ich nehme nicht an, das tc einen eigenen cache für die suche benutzt, sondern den von windows-dateisystem nutzt. entsprechend wenig kann man nichts genaues nicht sagen, ausser, das du dich darauf verlassen musst, das windows das vorhandensein geänderter dateien bemerkt und entsprechend aus dem cache schmeisst. ergo, tc sie bei der nächsten suche direkt von der platte läd und windows diese neue version dann wieder in den cache schreibt.
Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?

Mario
Post Reply