Jacob Sparre Andersen wrote:
> Martin Jørgensen skrev:
-snip-
> `find bib -maxdepth 2 -type d -name constants` gennemsøger kataloget
> »bib« til dybden 2 i underkataloger (»-maxdepth 2«) og interesserer
> sig kun for kataloger (»-type d«) der hedder »constants«.
>
> I det denne kommando blev skrevet indeni »$()«, blev uddata fra
> kommandoen (altså listen med kataloger der hedder »constants«) sat ind
> i stedet for »$(...)«. Det betyder så at `find $(...)` bruger disse
> kataloger som udgangspunkter for sin søgning. Denne gang begrænser vi
> os til filer (»-type f«) der enten hedder »boundary« eller »start«.
Det er smart.
> Med »|« kanaliserer vi så den resulterende filliste videre til den
> næste kommando.
Ja, det er den letteste del af det.
> `xargs` er et lidt specielt program. Det tager sine inddata (der i
> dette tilfælde kommer fra den foranstående `find`-kommando) og bruger
> dem som kommandolinjeargumenter til den kommando det har fået som
> kommandolinjeargument. `xargs grep -l "vigtigt_eksempel"` vil altså
> køre `grep -l "vigtigt_eksempel" fil_fra_find_1 fil_fra_find_2 ...`.
>
> Kommandolinjetilvalget »-l« gør at `grep` nøjes med at udskrive navnet
> på de filer, hvor det har fundet det søgte mønster.
>
> [ læs mere i <
http://cvs.linuxbog.dk/unix/bog/> ]
Takker. Men de har vist ikke sådan nogle avancerede eksempler, såvidt
jeg kan se.
Jeg har kigget lidt på afsnit 4.4.2 + 4.8.14. xargs, fordi mit næste
projekt, som ikke er særligt omfattende må blive at slette alle
biblioteker undtaget: "0", "constant", "system" og den sidste kalder vi
bare "data", på en bestemt placering, f.eks. når jeg står i
/home/martin/prog/vigtigt_sted.
Når jeg kører en flow-simulering kommer programmet dernæst med en masse
data i form af tids-biblioteker. Disse resultater skal slettes, dvs.
alle andre end de 4 ovennævnte biblioteker, skal slettes med en rm -r.
Det sker hver gang man ændrer start-betingelser...
Det her bliver ikke særligt pænt, men hvad med noget i stil med:
$(find /home/martin/prog/vigtigt_sted -maxdepth 1 -type d )
på en eller anden måde i kombination med en "xargs rm -r", men det jeg
så ikke kan finde ud af - er hvordan man ekskluderer bibliotekerne "0",
"constant", "system" og "data" fra at få en rm -f på sig...?
Med venlig hilsen / Best regards
Martin Jørgensen
--
---------------------------------------------------------------------------
Home of Martin Jørgensen -
http://www.martinjoergensen.dk