WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   problem mit find (http://www.wcm.at/forum/showthread.php?t=97223)

hugin grímnirson 17.05.2003 20:46

problem mit find
 
ich suche eine datei in einem VERZEICHNIS, welche einen bestimmten AUSDRUCK1 enthält. funzt mit

find /VERZEICHNIS -iname *AUSDRUCK1* -print

soweit bin ich schon.


jetzt möchte ich allerdings noch zusätzlich einen AUSDRUCK2 mit einem and-operator abfragen. daran scheitere ich allerdings kläglich.

kann mir jemand den richtigen syntax verraten?

tia

artemisia 17.05.2003 21:47

find /path/ | egrep -e "(expr1) | (expr2)"

vielleicht geht es auch mit find direkt.

das hier ist eine lösung, die mir ad hoc eingefallen ist.

greetz
artemisia

hugin grímnirson 17.05.2003 21:54

daran dachte ich auch schon, allerdings sollte es auch mit find gehen.
http://www.linux-ag.de/linux/LHB/nod...00000000000000
allerdings bin ich anscheinend zu blöd für den syntax ;)

notfalls werd ichs halt so machen, tendiere allerdings zu einer lösung, die nur find verwendet.

_m3 17.05.2003 22:04

RTFM ;)

Zitat:

expr1 expr2
And (implied); expr2 is not evaluated if expr1 is
false.

expr1 -a expr2
Same as expr1 expr2.

expr1 -and expr2
Same as expr1 expr2.
So findet ein
find . -iname "*.html" -iname "b*"
alle HTML-Files im aktuellen Verzeichnis und sucht dann innerhalb derer nach allen, die mit "b" beginnen.

OK?

hugin grímnirson 17.05.2003 22:30

Zitat:

Original geschrieben von _m3
RTFM ;)

So findet ein
find . -iname "*.html" -iname "b*"
alle HTML-Files im aktuellen Verzeichnis und sucht dann innerhalb derer nach allen, die mit "b" beginnen.

OK?

ad 1. habe ich, ich habs ja sogar noch mitgepostet ;) aber offensichtl nicht verstanden :utoh:

ad 2. ich habs mit find . -iname "expr1" "expr2" versucht und angenommen, dass iname dann auf beide expressions angewendet wird. damn.
nachträglich gesehen ist es auch logischer so, da einem sonst die möglichkeit genommen wäre, zb nach einer bestimmten datei in einem verzeichnis zu suchen.


ad 3. fast.
ein find . -iname "expr1" -a -iname "expr2" liefert mir brav die dateien, in denen beide ausdrücke enthalten sind.

ein find . -iname "expr1" -o -iname "expr2" liefert allerdings ein ergebnis, das für mich nicht ganz nachvollziehbar ist, jedenfalls nicht die dateien, in denen entweder expr1 oder expr2 vorhanden ist, da keine dateien mit expr1 ausgegeben werden und von denen mit expr2 auch lange noch nicht alle.

was mach ich jetzt bloß wieder falsch??

_m3 17.05.2003 22:54

also bei mir klappt es:
Code:

[m3@eddie m3]$ find . -iname "*.txt" | wc -l
    32
[m3@eddie m3]$ find . -iname "*.sxw" | wc -l
    18
[m3@eddie m3]$ find . -iname "*.txt" -o -iname "*.sxw" | wc -l
    50


artemisia 17.05.2003 23:13

also ohne -o geht es nicht, wobei -o wohl ein logisches xor ist.

ohne -o scheint es ehr ein -a (and) zu sein, aber sicher bin ich mir nicht.;-)


greetz
artemisia

_m3 17.05.2003 23:32

Zitat:

Original geschrieben von artemisia
ohne -o scheint es ehr ein -a (and) zu sein, aber sicher bin ich mir nicht.;-)
So ist es, steht in der Doku ;)

artemisia 17.05.2003 23:42

oki ... erwischt ... hatte irgendwie keine zeit sie zu lesen ;-)

greetz
arte

hugin grímnirson 18.05.2003 12:21

Zitat:

Original geschrieben von _m3
also bei mir klappt es:
bei mir mittlerweile auch.
bin auf eigentlich den gleichen fehler wieder reingefallen ... :D
ich hab nämlich noch die option print verwendet, hinten angehängt, und dann gilts offensichtlich (wie iname ja auch) nur für den 2ten ausdruck.

ohne print bzw mit print nach dem 1ten ausdruck funkts.

DANKE


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag