[debian etch] find commando met regex gaat mis

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DPLuS
  • Registratie: April 2000
  • Niet online
Graag zou ik in een bepaalde map alle foto's (JPEG) met 3 digits willen vinden.

Normaal zou dit toch moeten werken:
find . -regex '\./\d{3}\.jpg$' -print  


Maar als ik dat uitvoer krijg ik niets te zien?
Er staan toch echt bestanden als: "123.jpg" en "232.jpg" in.

Dit werkt dan trouwens wel weer:
find . -regex '\./[0-9][0-9][0-9]\.jpg$' -print


Waarom wil {3} niet werken in die regex?
Escapen van { en } werkt ook al niet....

Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 15:26

deadinspace

The what goes where now?

Zoals je in de find manpage hebt gelezen (die heb je toch wel gelezen? ;)) gebruikt find standaard emacs regexps. En die ondersteunen blijkbaar geen \d ofzo. Ze zouden wel \{x\} moeten ondersteunen, maar dat krijg ik met find idd ook niet werkend.

Je kunt een ander regextype selecteren. Met posix-extended wilde {3} hier iig wel werken. \d niet, maar [0-9] is meestal wel goed genoeg.

Je kan het path (.) en de actie (-print) weglaten trouwens. Beiden defaulten precies naar wat jij opgeeft.

Acties:
  • 0 Henk 'm!

  • jschot
  • Registratie: Oktober 2002
  • Laatst online: 09-07 09:46
Ik vind het een goede gewoonte om het pad wel altijd op te geven. Bij BSD find (ook standaard onder OSX) is deze namelijk verplicht.

Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 15:26

deadinspace

The what goes where now?

jschot schreef op donderdag 24 juli 2008 @ 10:21:
Ik vind het een goede gewoonte om het pad wel altijd op te geven. Bij BSD find (ook standaard onder OSX) is deze namelijk verplicht.
Ja, dat is verplicht bij wel meer find implementaties, maar ik vind het een beetje loos als je toch niet-verplichte extensies als -regex gebruikt. Je find opdracht werkt dan namelijk allang niet overal meer ;)