/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Find er besværlig!
Fra : Morten P


Dato : 10-04-10 07:55

Jeg vil finde alle mapper som ikke indeholder syntaksen '\d{4}-' (Dvs
ekskluder '2004-04-01 - Gert Ged', men inkluder gruppe mappen '2004')


find . -type d | egrep -v '[0-9]{4}-'


Den fungerer, men kan man ikke skrive den syntaks direkte i find?



 
 
Michael Rasmussen (10-04-2010)
Kommentar
Fra : Michael Rasmussen


Dato : 10-04-10 09:52

On Sat, 10 Apr 2010 08:55:10 +0200
"Morten P" <spam@spam.spam> wrote:

>
> Den fungerer, men kan man ikke skrive den syntaks direkte i find?
>
>
utestet: find . -type d -exec egrep -v '[0-9]{4}-' {} \;

--
Hilsen/Regards
Michael Rasmussen
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Morten P (10-04-2010)
Kommentar
Fra : Morten P


Dato : 10-04-10 14:04


"Michael Rasmussen" <mir@miras.org> wrote in message
news:20100410105221.460b833d@sleipner.datanom.net...
> On Sat, 10 Apr 2010 08:55:10 +0200
> "Morten P" <spam@spam.spam> wrote:
>
>>
>> Den fungerer, men kan man ikke skrive den syntaks direkte i find?
>>
>>
> utestet: find . -type d -exec egrep -v '[0-9]{4}-' {} \;


Desværre, den giver ingen træffere overhovedet



Klaus Alexander Seis~ (10-04-2010)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 10-04-10 10:46

Morten P skrev:

> Jeg vil finde alle mapper som ikke indeholder syntaksen '\d{4}-'
> (Dvs ekskluder '2004-04-01 - Gert Ged', men inkluder gruppe
> mappen '2004')
>
> find . -type d | egrep -v '[0-9]{4}-'

GNU find har en ‘-not’-operator:

find . -type d -not -name '[0-9][0-9][0-9][0-9]-*'

Mvh,

--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/

Morten P (10-04-2010)
Kommentar
Fra : Morten P


Dato : 10-04-10 14:07


"Klaus Alexander Seistrup" <klaus@seistrup.dk> wrote in message
news:hpphcg$1bi$1@zdani.szn.dk...
> Morten P skrev:
>
>> Jeg vil finde alle mapper som ikke indeholder syntaksen '\d{4}-'
>> (Dvs ekskluder '2004-04-01 - Gert Ged', men inkluder gruppe
>> mappen '2004')
>>
>> find . -type d | egrep -v '[0-9]{4}-'
>
> GNU find har en '-not'-operator:
>
> find . -type d -not -name '[0-9][0-9][0-9][0-9]-*'

Den der burde da fungere men den giver mig også følgende:

../Dyr/Egern/Peanut/2002-05-28 - Peanut Med Sin F?rste Jordn?d


Kan det stemme at fordi der er mærkelige tegn i så kan den ikke køre match
på dem?

(Er der en måde at erstatte de danske tegn der nu er garbled i filsystemet?)



Lars Kongshøj (10-04-2010)
Kommentar
Fra : Lars Kongshøj


Dato : 10-04-10 15:11

Morten P skrev:
> "Klaus Alexander Seistrup" <klaus@seistrup.dk> wrote in message
> news:hpphcg$1bi$1@zdani.szn.dk...
>> Morten P skrev:
>>
>>> Jeg vil finde alle mapper som ikke indeholder syntaksen '\d{4}-'
>>> (Dvs ekskluder '2004-04-01 - Gert Ged', men inkluder gruppe
>>> mappen '2004')
>>>
>>> find . -type d | egrep -v '[0-9]{4}-'
>> GNU find har en '-not'-operator:
>>
>> find . -type d -not -name '[0-9][0-9][0-9][0-9]-*'

Altså fire cifre efterfulgt af nul eller flere minusser

> Den der burde da fungere men den giver mig også følgende:
>
> ./Dyr/Egern/Peanut/2002-05-28 - Peanut Med Sin F?rste Jordn?d

Prøv '[0-9][0-9][0-9][0-9]-.*'

Mvh. Lars

Mogens Kjaer (11-04-2010)
Kommentar
Fra : Mogens Kjaer


Dato : 11-04-10 11:07

On 04/10/2010 03:07 PM, Morten P wrote:
....
> (Er der en måde at erstatte de danske tegn der nu er garbled i filsystemet?)

convmv

Mogens

--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

Jacob Gaarde (10-04-2010)
Kommentar
Fra : Jacob Gaarde


Dato : 10-04-10 14:09

On Sat, 10 Apr 2010 08:55:10 +0200
"Morten P" <spam@spam.spam> wrote:

> Jeg vil finde alle mapper som ikke indeholder syntaksen '\d{4}-' (Dvs
> ekskluder '2004-04-01 - Gert Ged', men inkluder gruppe mappen '2004')
>
>
> find . -type d | egrep -v '[0-9]{4}-'
>
>
> Den fungerer, men kan man ikke skrive den syntaks direkte i find?
>
>

find ./doc -not -name \*[0-9]4\*


--
--
//Jacob Gaarde
//Dont reply to my (apparent) e-mail address. Instead Use
//e-mail : jgaarde <at> gmail <dot> com
<http://www.linkedin.com/in/jacobgaarde>


Morten P (10-04-2010)
Kommentar
Fra : Morten P


Dato : 10-04-10 14:14

>
> find ./doc -not -name \*[0-9]4\*


Sorry


../Diverse/Objekter/0000-00-00 - Dilbert



Klaus Alexander Seis~ (10-04-2010)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 10-04-10 15:15

Morten P skrev:

>> find . -type d -not -name '[0-9][0-9][0-9][0-9]-*'
>
> Den der burde da fungere men den giver mig også følgende:
>
> ./Dyr/Egern/Peanut/2002-05-28 - Peanut Med Sin F?rste Jordn?d
>
> Kan det stemme at fordi der er mærkelige tegn i så kan den ikke
> køre match på dem?

Næppe. Metoden fungerer i øvrigt her:

#v+

$ mkdir -p "Dyr/Egern/Peanut/2002-05-28 - Peanut Med Sin Første Jordnød"
$ find . -type d
..
../Dyr
../Dyr/Egern
../Dyr/Egern/Peanut
../Dyr/Egern/Peanut/2002-05-28 - Peanut Med Sin Første Jordnød
$ find . -type d -not -name '[0-9][0-9][0-9][0-9]-*'
..
../Dyr
../Dyr/Egern
../Dyr/Egern/Peanut
$

#v-

Mvh,

--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/

Klaus Alexander Seis~ (10-04-2010)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 10-04-10 15:26

Lars Kongshøj skrev:

>> find . -type d -not -name '[0-9][0-9][0-9][0-9]-*'
>
> Altså fire cifre efterfulgt af nul eller flere minusser

Så vidt jeg kan se af find(1), benyttes der “shell pattern matching”,
ikke pcre, så udtrykket burde svare til

#v+

find . -type d -print \
| while read path
do
file="$(basename \"${path}\")"
case "${file}" in
[0-9][0-9][0-9][0-9]-* )
: pass
;;
* )
echo "${path}"
;;
esac
done

#v-

Mvh,

--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/

Lars Kongshøj (10-04-2010)
Kommentar
Fra : Lars Kongshøj


Dato : 10-04-10 16:15

Klaus Alexander Seistrup skrev:
> Lars Kongshøj skrev:
>
>>> find . -type d -not -name '[0-9][0-9][0-9][0-9]-*'
>> Altså fire cifre efterfulgt af nul eller flere minusser
>
> Så vidt jeg kan se af find(1), benyttes der “shell pattern matching”,
> ikke pcre, så udtrykket burde svare til
>
> #v+
>
> find . -type d -print \
> | while read path
> do
> file="$(basename \"${path}\")"
> case "${file}" in
> [0-9][0-9][0-9][0-9]-* )
> : pass
> ;;
> * )
> echo "${path}"
> ;;
> esac
> done
>
> #v-
>
> Mvh,

Du har sikkert ret. Jeg plejer at bruge locate+grep, det synes jeg er
nemmest.

Mvh. Lars

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste