/ 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
Bash find/cp script
Fra : Carsten


Dato : 27-09-02 09:59


Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
cp -R dirA/* dirB/

Men jeg vil gerne begrænse dette, så kun de filer der
er nyere end en bestemt dato kopieres. Man kan lave
noget med find:
find dirA -newer /tmp/timestampfile -exec cp {} dirB \;

Men den udelader directories, således disse ikke oprettes.
Jeg har overvejet at pipe resultatet af find ind i cpio,
og så pakke filen ud, eller måske skrive et perl script.
Men de to metoder er ikke så tiltalende. Er der en smartere
måde?

Takker

Carsten.


 
 
Lars Kongshøj (27-09-2002)
Kommentar
Fra : Lars Kongshøj


Dato : 27-09-02 11:55

Carsten wrote:
> Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
> at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
> cp -R dirA/* dirB/
> Men jeg vil gerne begrænse dette, så kun de filer der
> er nyere end en bestemt dato kopieres. Man kan lave
> noget med find:
> find dirA -newer /tmp/timestampfile -exec cp {} dirB \;
> Men den udelader directories, således disse ikke oprettes.

Den udelader da kun directories, hvis du ikke giver cp de rigtige
options, fx -r.

--
Lars Kongshøj
Registrer dig som linux-bruger:
http://counter.li.org/enter-person.php

Kim Hansen (27-09-2002)
Kommentar
Fra : Kim Hansen


Dato : 27-09-02 12:59

Carsten <carsten@spam.me.senseless> writes:

> Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
> at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
> cp -R dirA/* dirB/
>
> Men jeg vil gerne begrænse dette, så kun de filer der
> er nyere end en bestemt dato kopieres. Man kan lave
> noget med find:
> find dirA -newer /tmp/timestampfile -exec cp {} dirB \;
>
> Men den udelader directories, således disse ikke oprettes.
> Jeg har overvejet at pipe resultatet af find ind i cpio,
> og så pakke filen ud, eller måske skrive et perl script.
> Men de to metoder er ikke så tiltalende. Er der en smartere
> måde?

rsync

--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.

Byrial Jensen (28-09-2002)
Kommentar
Fra : Byrial Jensen


Dato : 28-09-02 04:59

Carsten <carsten@spam.me.senseless> skrev:
>
> Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
> at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
> cp -R dirA/* dirB/
>
> Men jeg vil gerne begrænse dette, så kun de filer der
> er nyere end en bestemt dato kopieres. Man kan lave
> noget med find:
> find dirA -newer /tmp/timestampfile -exec cp {} dirB \;
>
> Men den udelader directories, således disse ikke oprettes.
> Jeg har overvejet at pipe resultatet af find ind i cpio,
> og så pakke filen ud, eller måske skrive et perl script.
> Men de to metoder er ikke så tiltalende. Er der en smartere
> måde?

Man kan f.eks. bruge GNU tar:

$ # NB. Utestet kode.
$ rm -rf dirB
$ mkdir dirB
$ (cd dirA; tar --newer=/tmp/timestampfile -cf - .) | (cd dirB ; tar
--preserve-permissions -xf -)

Kan nemt pakkes ind i et shell script efter behag.

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

Månedens bedste
Årets bedste
Sidste års bedste