![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| UNIX for Dummies Questions & Answers Wenn Sie nicht sicher sind, wo Sie eine UNIX-oder Linux-Frage, post it here. Alle UNIX-und Linux-Anfänger willkommen! |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| Rekursive FTP - hier endlich. | Perderabo | Shell Programmierung und Scripting | 52 | 03-25-2009 12:15 PM |
| rekursiven grep Frage | Mace | UNIX for Dummies Questions & Answers | 1 | 08-11-2006 08:39 AM |
| rekursive GREP? | alan | UNIX for Dummies Questions & Answers | 3 | 08-22-2003 04:15 AM |
| grep rekursiv Verzeichnisse | jagannatha | UNIX for Dummies Questions & Answers | 8 | 07-24-2003 05:00 PM |
| Rekursive FTP | aslamg | UNIX for Dummies Questions & Answers | 1 | 03-08-2001 04:27 AM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Rekursive grep
Hallo,
Zum ersten Mal nach - ich habe keine formale Ausbildung Unix und könnten mit Hilfe dieser. Ich habe eine Liste von Zeichenketten in Datei1, dass ich verwenden möchte, um eine rekursive Suche (grep) unter einem bestimmten Verzeichnis. Hier ist ein Beispiel für die String brauche ich für die Suche: / verzeichnis / dire ctory / verzeichnis / dire ctory / filename Ich versuche zu zeigen, dass die Zeichenfolge eine vollständige Verzeichnispfad der Datei, in der einige der Verzeichnisse sind Räume, in deren Namen. Ich habe dann das folgende Skript: h in `cat Datei1" do grep-rl "$ h" /../../../../../>> /../../ Datei2; getan Also, ich bin versucht zu sagen, für jede Saite in Datei1, einen rekursiven grep in das angegebene Verzeichnis und drucken die Ergebnisse datei2. Das Problem (glaube ich) Ich bin in Betrieb ist das Format des Strings Ich suche, ich bin die Katze tun, ist die Behandlung der Räume, wie entkommt geht die grep aus. Ich habe versucht, den String in Einzel-und doppelte Anführungszeichen, aber es ist immer noch nicht funktioniert. Sorry für die fehlende technische Terminologie - ich hoffe, ich war klar genug. Wenn jemand jede mögliche Hilfe anbieten können, für die Arbeit mit dem, was ich habe oder eine einfachere Alternative zu dem, was ich habe, wäre es eine große Hilfe. Vielen Dank - Hinterland Junge |
|
||||
|
Code:
find /path/to/search/in -type f | \
while read filename
do
grep -f /path/to/strings.txt $filename
done > /home/upstate_boy/results.txt
grep-f <file> Mittel zu verwenden, die Saiten in <file> als Such-Strings für grep. Das Geschehen> Dateinamen schreibt die Ausgabe der Schleife zu Dateinamen Zuletzt bearbeitet von Jim McNamara; am 05-16-2008 10:07 AM.. |
|
||||
|
Der relative Pfad zu Datei2 scheint falsch, die Ausgabe-Umleitung ist relativ zum aktuellen Verzeichnis, nicht das Verzeichnis der Datei, die Sie Grepping. Die relative pat Sie Grepping scheint falsch zu; / .. / entspricht / entspricht /../../../../../ Die Backticks in der for-Schleife werden, was die Aufspaltung mit den Leerzeichen. Verwenden Sie ein Konstrukt ist, die weniger empfindlich auf Abstand Fragen, oder verwenden Sie richtige Angabe. Code:
for h in "`cat file1`"; do grep -rl "$h" pathtodir >>file2; done oder Code:
while read h; do grep -rl "$h" pathtodir >>file2; done<file1 |
|
||||
|
Vielen Dank für die Antworten. Ich glaube nicht, dass ich Ihre Vorschläge Vollstreckungsstaats richtig, ich habe versucht alle 3.
Jim, Ich bin definitiv verwirrt, welche Dateien wo gelesen, wenn ich Ihnen. übernehmen: strings.txt \u003d Datei mit Strings Ich möchte finden results.txt \u003d Ausgabedatei der Suchergebnisse Ich versuche: find / verzeichnis / I / wollen / search /-type f | \ while read results.txt tun grep-f $ strings.txt results.txt getan Wenn ich dieses, ich: heißen: "results.txt ': keine gültige Kennung Zeit, Ich habe nicht alle Fehler mit Ihren Anregungen, aber Strings Ich suche immer noch aufgebrochen, was bedeutet, dass die Räume oder "/" in die Saiten werden so behandelt, als Pausen Drehen 1 string in mehrere kleine Strings, die jeweils immer gesucht. Ein besseres Beispiel für das, was ich ursprünglich zu tun versuchen, ist: h in `cat strings.txt" do grep-rl "$ h" / verzeichnis / pfad / Ich will / zu / Suche />> / home / verzeichnis / results.txt; getan mit /../../ in meiner ursprünglichen Nachricht wurde nicht die beste Wahl für meinen Teil, wenn sie den Gegenwert von Zecken zurück. Ich werde weiterhin mit Geige alle Vorschläge, wenn keine weiteren Beratung angeboten werden kann es wäre eine große Hilfe. Dank Hinterland Junge |
|
||||
|
Die Variable in Jim Beispiel kann nicht genannt werden results.txt einfach ändern, um z. B. "Datei" und Sie sollten in Ordnung.
Alles, was mit erheblichen Räume sollte es in doppelten Anführungszeichen. |
|
||||
|
Ich habe es an:
find / verzeichnis / I / wollen / search /-type f | \ while read-Datei tun grep-f $ strings.txt results.txt getan Die Ergebnisse sind jetzt: grep:. txt: Keine solche Datei oder ein Verzeichnis Kann jemand Zauber genau, wie ich es am Beispiel Ich nutze? Dank Hinterland Junge |
![]() |
| Lesezeichen |
| Tags |
| grep, grep rekursiv, rekursiven grep |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|