← Back to team overview

sslug-teknik team mailing list archive

Re: xargs?

 

Andreas Bach Aaen <abach@xxxxxxxxxxxxxxxxx> writes:

>> Et eksempel kunne være noget med at lave backup af
>> filer
>> find . -name "*l" | xargs | tar cvf ged.tar -
>> (hvorfor virker den forresten ikke?)
>
> Øh. Hvad vil du finde med den find?
> "" for ikke at lade shellen ekspandere * i det katalog du står i. Det 
> er til at forstå. Men ville du ikke have lavet et regulært udtryk 
> istedet?

Jeg tror aldrig jeg har brugt regulære udtryk sammen med find. Ganske
ofte er globbing at foretrække til at finde filer. Det er generelt
kortere og opfylder for det meste mit behov.

Spørgsmålet er nærmere hvad tar gør med den sidste streg. Det kan jeg
ikke finde i dokumentationen. (Jeg kan kun finde hvad '-' betyder
sammen med -f)

> tar cvf ged.tar abemad.txt
> tar cvf ged.tar biolog.txt
> tar cvf ged.tar citron.txt
> ...
>
> Det er vel kun den føste der skal have (c)reate som parameter.

Man vil ende med en tar-fil kun bestående af den sidste fil. Men ved
at bruge r som parameter skulle det gå.

>> Har I nogle gode eksempler jeg kan bruge?

Tilføj selv -print0 til find og -0 til xargs hvis du vil snakke om
filer med mellemtumstegn i navnet. Dette er GNUismer.


$ find -mtime 7 | xargs rm 

Slet filer der ikke er blevet ændret i de sidste 7 dage.


$ find -name \*.jpg | xargs -rf jpgs.tar

Gem alle JPG-billeder. (igen 'tar r' tilføjer til et tar-arkiv, hvis
arkivet ikke findes bliver det oprettet. I hvert fald med min tar).


$ find / -user brother -group staff | xargs chgrp users

Skift gruppe på alle brothers filer der tidligere var i gruppen
staff. (brother er måske fjernet fra gruppen staff).


> Ikke lige nogle gode gnu only eksempler, for næsten alle gnu 
> filværktøjer har indbygget en -r option. Forestil dig f.eks. en diff 
> kommando uden en -r option...

Jeg tror ikke lige at nogen af ovenstående kan gøres med en -r option.

-- 
 Peter Makholm     |                                 Wisdom has two parts:
 peter@xxxxxxxxxxx |                           1) having a lot to say, and
 http://hacking.dk |                                      2) not saying it


Follow ups

References