holzkohlengrill
Anmeldungsdatum: 31. Oktober 2012
Beiträge: 71
|
Ich habe schon des oeffteren danach gesucht, aber leider nichts gefunden. Deshalb frage ich jetzt mal danch. Ich habe oft das Problem, wenn ich mit locate etwas suchen will, dass ich bestimmte keywords ausschliessen will, um die Ergebnisse einzugrenzen. Manchmal weiss ich nur nach was ich neben dem keyword nicht suchen will. Deshalb waere es praktisch, wenn es eine Option/tool gaebe, dass wie locate oder aehnlich arbeitet und bei dem ich auch keywords ausschliessen kann. Vielen Dank soweit.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13213
|
holzkohlengrill schrieb:
Ich habe oft das Problem, wenn ich mit locate etwas suchen will, dass ich bestimmte keywords ausschliessen will, um die Ergebnisse einzugrenzen. Manchmal weiss ich nur nach was ich neben dem keyword nicht suchen will. Deshalb waere es praktisch, wenn es eine Option/tool gaebe, dass wie locate oder aehnlich arbeitet und bei dem ich auch keywords ausschliessen kann.
Geht es Dir um Schlüsselwörter in Dateinamen oder in -inhalten? Beides geht mit find , das erste ist etwas leichter: | find wo/auch/immer ! -name '*dies_nicht*'
|
Beim zweiten muss man Tools aus der grep -Familie hinzunehmen: | find wo/auch/immer -type f ! -exec fgrep -qw dies_nicht {} \; -print
|
Das kann man natürlich noch beliebig komplizierter machen. Es hängt halt immer vom konkreten Fall ab.
|
holzkohlengrill
(Themenstarter)
Anmeldungsdatum: 31. Oktober 2012
Beiträge: 71
|
Danke fuer deine Antwort. Wenn ich dein erstes Beispiel richtig verstehe, wuerde ich dann aber alle Dateien finden, die nicht *dies_nicht* enhalten?
Vielleicht habe ich dich auch falsch verstanden. Trotzdem nochmal anders ausgedrueckt, was meine Intention ist:
<Command> {<Pfad>} <zu_suchender_string_in_datei/pfad> {<optionen> ...}
. { } : Optional Optionen: z.B. -e bzw. --exclude >> "-e "dies_nicht" Primaer geht es mir um Dateinamen bzw. um Pfade.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13213
|
holzkohlengrill schrieb:
Wenn ich dein erstes Beispiel richtig verstehe, wuerde ich dann aber alle Dateien finden, die nicht *dies_nicht* enhalten?
Ja genau. Probier es doch einfach mal aus.
Primaer geht es mir um Dateinamen bzw. um Pfade.
Primär oder ausschließlich? Andernfalls muss man die Ansätze ggf. auch kombinieren.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Eventuell ginge es ja auch ganz simpel mit dem Holzhammer. Einfach aus der locate- Ausgabe den Müll wegfiltern, mit grep: locate dieses | grep -v "aber dies nicht" LG, track
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17622
Wohnort: Berlin
|
| locate Schimmel | grep -v Pferd
locate -i schimmel | grep -iv pferd
locate -i schimmel | egrep -iv "(docx|odt|pdf|html)"
|
Find ist schwerlich eine Alternative - das sucht ja u.U. die ganze Festplatte ab, immer wieder auf's neue. Die Ergebnisse, die bei locate aus einer indizierten Datenbank kommen, um Größenordnungen schneller, kann man mit grep nach Stopwords filtern, -i ignoriert Groß-/Kleinschreibung, egrep ist die extended-Suche die solche Listen von Stopwords erlaubt.
|
holzkohlengrill
(Themenstarter)
Anmeldungsdatum: 31. Oktober 2012
Beiträge: 71
|
Vielen Dank an user_unknown und track. Danach habe ich gesucht. Die --invert-match Option habe ich wohl uebersehen. Man haette auch einfach exclude schreiben koennen. 😉
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13213
|
user unknown schrieb:
Find ist schwerlich eine Alternative - das sucht ja u.U. die ganze Festplatte ab, immer wieder auf's neue.
Ich ziehe das tatsächlich vor, weil locate immer ein wenig mit der Aktualität des Index hinterher hinkt.
Die Ergebnisse, die bei locate aus einer indizierten Datenbank kommen, um Größenordnungen schneller, kann man mit grep nach Stopwords filtern, -i ignoriert Groß-/Kleinschreibung, egrep ist die extended-Suche die solche Listen von Stopwords erlaubt.
Ja, die Lösung mit grep -v ist auch gut - man muss sich nur klar sein, dass dann der komplette Pfad gematched wird. Kommt halt immer darauf an, was man will. Ich hatte das so verstanden, dass es um den Basename und nicht irgendwelche Verzeichnisnamen ging.
|
holzkohlengrill
(Themenstarter)
Anmeldungsdatum: 31. Oktober 2012
Beiträge: 71
|
Dann hab ich mich wohl unklar ausgedrückt. Das tut mir leid. Aktualisieren kannst du den Index übrigens auch manuell mit sudo updatedb aktualisieren.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17622
Wohnort: Berlin
|
rklm schrieb: user unknown schrieb:
Find ist schwerlich eine Alternative - das sucht ja u.U. die ganze Festplatte ab, immer wieder auf's neue.
Ich ziehe das tatsächlich vor, weil locate immer ein wenig mit der Aktualität des Index hinterher hinkt.
Ich suche fast immer Dateien die älter als 24h sind, und daher indiziert sein sollten. Wenn nicht weiß ich das wiederum fast immer. Daher benutze ich für so was fast nie find.
|