/ 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
Udpak alle tar.gz filer i kataloget
Fra : Morten Trab


Dato : 07-04-04 10:01

Hvordan kan man pakke alle tar.gz filer ud med en kommando??

tar -zxvf *.tar.gz viker ikke...

--
Mvh,/Best regards,
Morten Trab
Web: http://www.blackchart.dk



 
 
Jesper Krogh (07-04-2004)
Kommentar
Fra : Jesper Krogh


Dato : 07-04-04 10:11

I dk.edb.system.unix, skrev Morten Trab:
> Hvordan kan man pakke alle tar.gz filer ud med en kommando??
>
> tar -zxvf *.tar.gz viker ikke...

for i in $(ls -1 *tar.gz); do tar xzvf $i; done

Måske.

--
../Jesper Krogh, jesper@krogh.cc, Jabber ID: jesper@jabbernet.dk


Peter Jensen (07-04-2004)
Kommentar
Fra : Peter Jensen


Dato : 07-04-04 19:37

Jesper Krogh wrote:

>> Hvordan kan man pakke alle tar.gz filer ud med en kommando??
>>
>> tar -zxvf *.tar.gz viker ikke...
>
> for i in $(ls -1 *tar.gz); do tar xzvf $i; done

Useless use of ls! Globben '*' bliver fortolket af din shell før ls
overhovedet ser den, så du spilder en proces. Desuden er der adskillige
muligheder for fejl. F.eks. hvis en af filerne har en whitespace i sit
navn, eller hvis der var en gzippet fil der hedder noget i stil med
star.gz i biblioteket. Den korrekte måde er:

for i in *.tar.gz; do tar -xvzf "$i"; done

Hvis underbibliotekerne også skal med, så skal man nok i gang med noget
'find -exec' magi.

Noget helt andet er at -1 hos 'ls' udelukkende har noget at sige når
output er til en terminal. Hvis du piper output over i f.eks. 'less',
eller bruger det som du gør dér, så er output altid i en kolonne.

--
PeKaJe

Economics is extremely useful as a form of employment for economists.
      -- John Kenneth Galbraith

Jesper Krogh (07-04-2004)
Kommentar
Fra : Jesper Krogh


Dato : 07-04-04 19:42

I dk.edb.system.unix, skrev Peter Jensen:
> Jesper Krogh wrote:
> >> Hvordan kan man pakke alle tar.gz filer ud med en kommando??
> >>
> >> tar -zxvf *.tar.gz viker ikke...
> >
> > for i in $(ls -1 *tar.gz); do tar xzvf $i; done
>
> Useless use of ls! Globben '*' bliver fortolket af din shell før ls
> overhovedet ser den, så du spilder en proces. Desuden er der adskillige
> muligheder for fejl. F.eks. hvis en af filerne har en whitespace i sit
> navn, eller hvis der var en gzippet fil der hedder noget i stil med
> star.gz i biblioteket. Den korrekte måde er:
>
> for i in *.tar.gz; do tar -xvzf "$i"; done
>
> Hvis underbibliotekerne også skal med, så skal man nok i gang med noget
> 'find -exec' magi.
>
> Noget helt andet er at -1 hos 'ls' udelukkende har noget at sige når
> output er til en terminal. Hvis du piper output over i f.eks. 'less',
> eller bruger det som du gør dér, så er output altid i en kolonne.

Takker for korrektionen, jeg vil dog stadig hævde at den jeg postede
virker for over 95% af folk( og har virker 100% for mig ), det var
derfor den lige var i "fingrene".


--
../Jesper Krogh, jesper@krogh.cc, Jabber ID: jesper@jabbernet.dk


Kent Friis (07-04-2004)
Kommentar
Fra : Kent Friis


Dato : 07-04-04 20:14

Den Wed, 7 Apr 2004 20:41:46 +0200 skrev Jesper Krogh:
> I dk.edb.system.unix, skrev Peter Jensen:
>> Jesper Krogh wrote:
>> >> Hvordan kan man pakke alle tar.gz filer ud med en kommando??
>> >>
>> >> tar -zxvf *.tar.gz viker ikke...
>> >
>> > for i in $(ls -1 *tar.gz); do tar xzvf $i; done
>>
>> Useless use of ls! Globben '*' bliver fortolket af din shell før ls
>> overhovedet ser den, så du spilder en proces. Desuden er der adskillige
>> muligheder for fejl. F.eks. hvis en af filerne har en whitespace i sit
>> navn, eller hvis der var en gzippet fil der hedder noget i stil med
>> star.gz i biblioteket. Den korrekte måde er:
>>
>> for i in *.tar.gz; do tar -xvzf "$i"; done
>>
>> Hvis underbibliotekerne også skal med, så skal man nok i gang med noget
>> 'find -exec' magi.
>>
>> Noget helt andet er at -1 hos 'ls' udelukkende har noget at sige når
>> output er til en terminal. Hvis du piper output over i f.eks. 'less',
>> eller bruger det som du gør dér, så er output altid i en kolonne.
>
> Takker for korrektionen, jeg vil dog stadig hævde at den jeg postede
> virker for over 95% af folk( og har virker 100% for mig ), det var
> derfor den lige var i "fingrene".

Et af kravene for at den virker er at der ikke er mellemrum i nogen
af filnavnene. Så hvis man roder med en Windows-partition, virker den
fx ikke ("C:\Program files").

Men det er da en glædelig nyhed, hvis 95% af folk ikke har en windows
partition.

Mvh
Kent
--
Help test this great MMORPG game - http://www.eternal-lands.com/

Thomas S. Iversen (07-04-2004)
Kommentar
Fra : Thomas S. Iversen


Dato : 07-04-04 20:22

On 2004-04-07, Kent Friis <leeloo@phreaker.net> wrote:

> Men det er da en glædelig nyhed, hvis 95% af folk ikke har en windows
> partition.



Mvh Thomas

Klaus Ellegaard (07-04-2004)
Kommentar
Fra : Klaus Ellegaard


Dato : 07-04-04 10:12

"Morten Trab" <morten@trab.dk> writes:

>Hvordan kan man pakke alle tar.gz filer ud med en kommando??

>tar -zxvf *.tar.gz viker ikke...

Nej, for så tror den, at den skal trække fil2.tar.gz, fil3.tar.gz,
fil4.tar.gz, ... ud af fil1.tar.gz.

Prøv i stedet med: for a in *.tar.gz ; do tar zxvf $a ; done

Mvh.
   Klaus.

Morten Trab (07-04-2004)
Kommentar
Fra : Morten Trab


Dato : 07-04-04 10:43

"Klaus Ellegaard" <klausellegaard@msn.com> skrev i en meddelelse
news:c50gkh$ig1$1@news.klen.dk...

> Prøv i stedet med: for a in *.tar.gz ; do tar zxvf $a ; done

Takker, det virker...

--
Mvh,/Best regards,
Morten Trab
Web: http://www.blackchart.dk



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

Månedens bedste
Årets bedste
Sidste års bedste