5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)
  • Q:
    Bijdrager
    JRI

    Rexep en find

    Hallo,

    Ik zoek met find en regex naar filenames die als volgt kunnen zijn

    result.txt.r1234
    of
    result.txt.mine

    ik gebruik de volgende statement maar die werkt niet. Begrijp het niet, want op een linux bak werkt die wel.

    find . -regex ‘./*/result.txt.[rm].*’

    Kan iemand me uitleggen wat de correcte statement is?

    Dank.

    Jiri

    Bijdrager
    iJoost

    /^result.txt..*$/

    En leer even de beginselen van reguliere expressies want zo te zien begrijp je niet wat dat sterretje en die punt doen.

    Bijdrager
    JRI

    Dank je voor de reactie.

    ik gebruik nu dus :

    find . -regex /^result.txt..*$/

    en krijg geen rresults. Is de find standaard recursive?

    of is mijn syntaxis fout?

    find . -name *.txt.*

    laat wel resultaten zien??

    Jiri

    Bijdrager
    iJoost

    Weet je wat?

    Kijk eens hier:

    http://unixhelp.ed.ac.uk/CGI/man-cgi?find

    Nog veeeeeel meer mooie mogelijkheden om precies aan te geven wat je wilt.;-)

    Enne -regex heeft een heel pad nodig zie ik, niet alleen een bestandsnaam.
    Zo dan?

    /^./result.txt..*$/

    Misschien toch handiger om een van die andere opties te proberen. Of je eens even in de reguliere expressies te verdiepen. Het is niet zo heel erg vreselijk moeilijk.;-)

    Bijdrager
    TGV
    ”JRI”

    find . -regex ‘./*/result.txt.[rm].*’

    Om te beginnen moet je niet voor het hele pad matchen, alleen voor de filenaam. Dat gaat het makkelijkst: find . -name ‘result.txt.[rm]*’. Dat “commando” gebruikt dezelfde betekenis voor sterretje en punt en zo als de shell.

    Als je toch met reguliere expressies aan de gang wil, moet je inderdaad zoals iJoost zegt even de handleiding van find en de reguliere expressies bestuderen. De fout die je maakt is: ./*/resultetc betekent: een willekeurig teken gevolgd door een of meer slashes gevolgd door resultetc. Verder is je expressie iets te liberaal omdat result.txt. ook matcht met resultXtxtY, snap je?

    De correcte expressie zou dus: ‘.*/result.txt.[rm].*’ zijn. De eerste .*/ matcht alles tot en met de filenaam, result.txt. matcht dus result.txt. en [rm].* macht r1234 of mine.

5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.