find vs, GNU find

Diskutiere mit über: find vs, GNU find im Mac OS X - Unix & Terminal Forum

  1. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    hallo zusammen,

    In GNU find (nicht auf Mac OS X) steht in der manpage im Bereich "OPERATORS" an letzter Stelle folgender Eintrag:
    Code:
    expr1 , expr2
           List;  both  expr1  and  expr2  are always evaluated.  The value of
           expr1 is discarded; the value of the list is the value of expr2.
    Der Komma Operator ist im Mac OS X find nicht enthalten.

    Fragen:
    Gibt es GNU find auch für Mac OS X? Gefunden habe ich nichts.
    Was macht dieser Komma Operator überhaupt genau, wenn der Wert verworfen wird?
    Gibt es eine Möglichkeit, die Funktion des Komma Operators in "unserem" find nachzuahmen?
     
  2. ratti

    ratti MacUser Mitglied

    Beiträge:
    1.515
    Zustimmungen:
    56
    Registriert seit:
    09.05.2004
    Wie sieht es mit fink aus, oder manuellem Eigenbau? Ha! Ne, hier, darwinports:
    http://findutils.darwinports.com/
    "Description: findutils contains the GNU find, xargs, and locate programs"

    Hm...:
    "The comma operator can be useful for searching for several different types of thing, but traversing the filesystem hierarchy only once. The -fprintf action can be used to list the various matched items into several different output files."

    Browse mal hier hin:
    http://www.gnu.org/software/findutils/manual/html_mono/find.html
    und Suche nach "comma operator", da kommen ein paar Beispiele wie dieses hier:

    find / -type d \( -perm -o=w -fprint allwrite , \
    -perm -o=x -fprint allexec \)

    Mit einem Suchbefehl kannst du zwei getrennte Listen erzeugen.


    Tja. Ich muss sagen, meine beiden größten Fehlurteile, seit ich mich mit Computern beschäftige, waren:

    1. "Ein DNS-Server aufzusetzen kann nciht sehr anspruchsvoll sein. Was kann da schon groß drinstehen - eine Liste mit Namen und IPs.". Hoppla. Mein erster bind8 dauerte zwei Wochen.

    2. Ein Befehl zum Suchen von Dateien, meine Güte, was soll da schon groß kompliziertes zu verstehen sein... und dann kam GNU find. =%-)

    Gruß,
    Jörg
     
  3. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    Fink? - Nein, danke.

    darwinports: Ich sollte meiner Augen untersuchen lassen :D:
    Code:
    port search find
    ...
    findutils                      sysutils/findutils @4.2.25       findutils contains the GNU find, xargs, and locate programs
    ...
    Bei meinem aktuellen Problem geht es um folgende expression:
    Code:
    -type d -name FOO -prune -false , -type d -name BAR
    Als Ergebniss soll ein Verzeichnis BAR gefunden werden, dass aber nicht unterhalb von FOO liegen darf.
    Bis zum "-prune" ist mir das klar und nach dem Komma auch wieder.
    wie das "-false , expression" in diesem Beispielfunktioniert ist mir aber immer noch unklar :confused:.
     
  4. ratti

    ratti MacUser Mitglied

    Beiträge:
    1.515
    Zustimmungen:
    56
    Registriert seit:
    09.05.2004
    Hm. Ich bin nicht der find-Profi, aber ich würde mal sagen, der find-Befehl findet prinzipiell erst mal sowohl die BAR- als auch die FOO-Resultate. Das "false" macht aber die BAR-Fundstellen ungültig, und das betrifft eben auch alle, die FOO *und* BAR findet. Man muss sich wohl die Parameterliste am Komma getrennt vorstellen in einen FOO-Teil und einen BAR-Teil.

    Also:

    Nur BAR gefunden = Fundstelle

    Nur FOO gefunden = eigentlich Fundstelle, durch -false aber doch nicht.

    FOO und BAR gefunden: Fundstelle für den FOO-Teil, durch die höhere Priorität des BAR-Teils (Linke Hälfte der Komma-Liste enthält Resultat!) aber "entwertet".

    FOOrchtBAR. ;-)

    Gruß,
    Jörg
     
  5. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    Registriert seit:
    24.09.2003
    manpage: "expr1 , expr2
    The value of expr1 is discarded; the value of the list is the value of expr2."
    Das hatte ich so interpretiert:
    Nur FOO gefunden => keine Fundstelle, da "value of the list is the value of expr2".

    Ich glaub jetzt hab ich's :D.

    Meine Verwirrung entstammt dem Unterschied von '-false' in GNU find und "unserem" find.
    Mac OS X find:
    -false expression
    -not expression
    This is the unary NOT operator. It evaluates to true if the expression is false.
    GNU find:
    -false Always false

    Durch -prune wird der Teil vor dem "," true, wenn FOO gefunden wird; durch -false wieder falsch.
    Zusätzlich wird unterhalb von FOO nicht weitergesucht (darauf kommt es hier an, ein BAR unterhalb von FOO soll nicht gefunden werden).
    Hast also Recht ;)

    Danke für die Hilfe.
    In der Tat :D.
     
Die Seite wird geladen...
Ähnliche Themen - find GNU find Forum Datum
find > total Mac OS X - Unix & Terminal 22.10.2015
find mit Gross- und Kleinbuchstaben Mac OS X - Unix & Terminal 30.08.2012
Find, Zip - und das mit mehreren dateien? Mac OS X - Unix & Terminal 02.05.2011
GNU-Darwin Mac OS X - Unix & Terminal 14.03.2009
'find' - Befehl; Geschützte Ordner nicht berücksichtigen Mac OS X - Unix & Terminal 09.07.2007

Diese Seite empfehlen

Benutzerdefinierte Suche