Gå til innhold

Spørsmål om 'find'


Anbefalte innlegg

Videoannonse
Annonse
Hvordan kan jeg lete etter flere forskjellige filer på én gang, fortrinnsvis med find, og uten å lage ett wrapper-skript?

 

Tenker da på: find . -name *.{hjalla,hildur}

Hva med å bruke egrep i kombinasjon med find?


find . | egrep '.(hjalla|hildur)$'

Du kan også prøve å gjøre noe liknende med "-regex" i find, men vet ikke helt om dette gir like bra resultat som "extended grep" (egrep).

Lenke til kommentar
Nå er jeg ikek så fryktelig stødig på regular expressions, men fant en måte å lure find til å finne flere typer filer,

 

find ./ -name '*.txt' -or -name '*.cfg*'

 

Lure.. :lol: Det er et gyldig argument til find ! man find, og lær deg bruken.. hehe

 

Forøvrig er pipe til grep bare teit når du ikke trenger det.

Lenke til kommentar
Forøvrig er pipe til grep bare teit når du ikke trenger det.

om regex i find ikke takler det du sender til den, så ser jeg ikke noe teit i det. Med pipe kan man sende det videre til et verktøy som takler det på en elegant måte (her: egrep). Uansett er det (som vist) flere måter å gjøre det på, og hvilken metode som er "best" får være opp til brukeren.

Lenke til kommentar
Lurer find på den måten at man sikkert kan gjøre det på andre og kjappere måter enn som så.

Spesielt hvis han skal ha tak i flere typer filer.

Dessuten, kom med forslag selv, siden du tydligvis kan den ut og inn.

 

-Dante

 

Du har fortsatt ikke forstått det skjønner jeg.. Les nøye nå, du _LURER_ (dine ord det her) ikke find, i og med at det er et gyldig argument, find er _laget_ for å forstå "-or" og "-and", logical AND/OR operands er de kalt. Står tilfredsstillende forklart i manualen til find, foreslår at du tar en grundigere titt på den.

Lenke til kommentar
Forøvrig er pipe til grep bare teit når du ikke trenger det.

om regex i find ikke takler det du sender til den, så ser jeg ikke noe teit i det. Med pipe kan man sende det videre til et verktøy som takler det på en elegant måte (her: egrep). Uansett er det (som vist) flere måter å gjøre det på, og hvilken metode som er "best" får være opp til brukeren.

 

Ikke takler.. hva mener du ?

 

find -E . -regex '.*/(hilldur|filldur)' -ls

 

funker som forventet det, unødig med pipe til grep. Minner meg litt om folks bruk av cat for å pipe en fil til grep f.eks., isteden for å angi filnavnet som argument til grep ! useless use of cat.. her er et eks.

 

cat filnavn | grep "crap"

 

dette er en klassiker. grep er selvfølgelig ikke eneste program folk misbruker cat på.

 

Ellers har du som sagt -and/-or, og andre find finesser for å begrense antall treff.

Lenke til kommentar

antok feilaktig at linux var såpass med i notene at de hadde -E (extended regular expression under FreeBSD) for find, men den gang ei. Godt jeg holder meg til FreeBSD 8)

 

Da blir det i såfall å holde seg til pipe og egrep om du velger å bruke infix operator "|" i et eventuelt regex utrykk. Bør kansje vurdere xargs om lista blir lang, om du da opplever problemer i et slikt tilfelle.

 

Linux is for windows haters, FreeBSD is for unix lovers.. :D

Lenke til kommentar
funker som forventet det, unødig med pipe til grep. Minner meg litt om folks bruk av cat for å pipe en fil til grep f.eks., isteden for å angi filnavnet som argument til grep ! useless use of cat.. her er et eks.

 

Vet ikke om jeg helt skjønner nå, men sier du at slikt som:

cat hjalla | less blir feil?

 

Har jo alltid gjort det på denne måten, for det lærte jeg i en bok jeg kjøpte, men mener du da at du har mer rett enn boka, som er skrevet av folk som faktisk kan linux og har det som jobb?

Lenke til kommentar

Vet ikke om jeg helt skjønner nå, men sier du at slikt som:

cat hjalla | less blir feil?

 

Har jo alltid gjort det på denne måten, for det lærte jeg i en bok jeg kjøpte, men mener du da at du har mer rett enn boka, som er skrevet av folk som faktisk kan linux og har det som jobb?

 

Har aldri sagt at det blir feil, og om du blindt tror at alle bøker du kommer over er så forferdelig korrekte og definitive så har du driti på draget. Du skal være en smule kritisk til hva du leser, og ikkeminst er det en idè å sjekke korrekturer for den bok du eventuelt leser. For å se hva som faktisk er feil, eller andre ting som er rettet på etter lansering av boken. kunnskapsbøker, som er verdt penga sine(?), har ofte en hjemmeside du kan gå til for å sjekke korrektur. Neste gang du leser om find/less/cat el. i en bok, så gjør dine egne undersøkelser, sjekk manual (man less f.eks.) for programmet eller annen dokumentasjon programvaren kommer med, og eksperimenter egenhendig.

 

For å mate dette inn med teskje.. jeg nevnte "useless use of cat". Dette kan oversettes til unødig bruk av cat, og ikke "feil bruk.." som du oversatte den setningen til. Selvom det funker, betyr ikke det nødvendigvis at det er den mest effektive metoden å gjøre ting på.

 

Her er et par eksempler til ettertanke, med bruk av less, først din linje.

cat fil | less

Dette funker greit, men hvorfor bruke pipe i dette tilfellet når du kan angi "fil" som argument til less isteden, slik:

less fil

 

Det er hva jeg mener er "useless use of cat".

 

Virker nesten som at de som skrev boka du snakket om enten tar den tyngste veien for å gjøre ting, eller så var "cat fil | less" bare et eksempel på hvordan pipe _kan_ brukes. Den nøyaktige kommando linje de brukte for å illustrere dette var kansje ikke et så godt valg, med tanke på at lesere adopterer slik bruk av cat, eller misforstår at det kun var et eksempel på bruk av pipe og ikke hvordan "less" fungerer. Om det nå var et kapittel om "less" du kom over dette, så kan du brenne boka så fort du får kjangsen.

 

Disclaimer:

Jeg har nå antatt at "less" i din linux distribusjon aksepterer filnavn som argument, mest sannsynlig gjør den det. Men det er begrenset hvor dypt jeg gidder å grave i det her.

Lenke til kommentar
Disclaimer:

Jeg har nå antatt at "less" i din linux distribusjon aksepterer filnavn som argument, mest sannsynlig gjør den det. Men det er begrenset hvor dypt jeg gidder å grave i det her.

Dette er kanskje noe av grunnen til at folk foretrekker pipe mellom programmer, fremfor å måtte lære seg argumenter til hvert bidige program (less er et søkt eksempel, men argumentene til find er ganske komplekse)... Kanskje pipe krever mer ressurser (kan noen bekrefte dette ?), men den tiden det tar for meg å lete etter argumenter til enkeltprogram er mye lengre enn ekstratiden "pipinga" krever.

Lenke til kommentar

Dette er kanskje noe av grunnen til at folk foretrekker pipe mellom programmer, fremfor å måtte lære seg argumenter til hvert bidige program (less er et søkt eksempel, men argumentene til find er ganske komplekse)... Kanskje pipe krever mer ressurser (kan noen bekrefte dette ?), men den tiden det tar for meg å lete etter argumenter til enkeltprogram er mye lengre enn ekstratiden "pipinga" krever.

 

Det er rimelig å anta at et program som jobber med en tekst strøm, enten det er fra fil eller pipe, aksepterer et filnavn som argument. Som "less" i dette eksempelet.

 

Samtidig synes jeg det ikke er noe godt argument å foretrekke en metode for å slippe å lese manualen for et program. Less/more, find, ls, rm, chmod, chown, + mange fler er kjerne programmer i unix systemer, og de bør kunnes om du er kun en smule seriøs på unix. Du skal selvfølgelig ikke kunne alt, men du skal ha en god ide om mulighetene, og heller bruke "man" om du er usikker på noe, eller ikke husker hvordan syntaksen for programmet var.

 

Unødige uvaner bør man bli kvitt så fort som mulig.

Lenke til kommentar

Subtile fornærmelser #1:

Gi folk en snikende mistanke av at du driver gjøn med dem når du later som om du er dum, ved å smøre akkurat nok tøv på det du serverer dem til at det blir lite sannsynlig at du faktisk ER så dum.

-Virker best på folk som ikke tror alle andre faktisk er mindre intelligente enn dem selv.

Lenke til kommentar
Subtile fornærmelser #1:

Gi folk en snikende mistanke av at du driver gjøn med dem når du later som om du er dum, ved å smøre akkurat nok tøv på det du serverer dem til at det blir lite sannsynlig at du faktisk ER så dum.

-Virker best på folk som ikke tror alle andre faktisk er mindre intelligente enn dem selv.

 

Har du kommentarer personlig ovenfor meg foreslår jeg at du tar det opp med meg direkte, det hører ikke hjemme her i forumet.

 

Det er ikke fornærmelser å finne her fra meg mot andre, mener jeg, det har _kansje_ vært en viss sarkasme ovenfor den som tilsynelatende ikke leste mitt innlegg men likevel valgte å besvare. Om du har tolket noe som fornærmelser foreslår jeg at du eller annen fornærmede utdyper dette nærmere i en privat msg, også avslutter jeg med å beklage om noen her føler seg fornærmet av hva jeg har skrevet.

Lenke til kommentar

Må si meg helt enig i det ibrotha skriver lenger opp her, finnes d egentlig noe som unødvendig bruk av pipe? Pipe er et utmerket hjelpemiddel for å få delt opp komplekse kommandoer i mindre og mer håndterbare deler, i tillegg å ser alt mye enklere og mer forståelig ut...

 

Litt av poenget med piping, er at du skal kunne lære deg et program (eks. grep), og så kan du bruke dette på alle andre programmer du bruker.

 

Og, maggun: må si jeg humret godt over det siste innlegget ditt :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...