/ 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 script: Hvordan håndterer jeg mellem~
Fra : Peter G.


Dato : 21-06-05 07:43


Meget enkelt problem, men jeg kan ikke rigtig finde en løsning.

Jeg har et basalt bash script som gerne skulle gå igennem et par
vilkårlige subdirectories og udføre nogle kommandoer for hvert dir.

Til dette brugte jeg løkken
for dir in `find /path/to/hoveddir -type d -print` ; do
cd "$dir"
[kommandoer for dir]
done

Men dette giver mig problemer med dir-navne der indeholder
mellemrum. Hvorledes overkommer jeg dette?

--
Regards, Peter
Topposters and other annoying elements will be killfiled in silence.

 
 
Jacob Gaarde (21-06-2005)
Kommentar
Fra : Jacob Gaarde


Dato : 21-06-05 08:14

On Tue, 21 Jun 2005 08:42:49 +0200
peterg@despammed.com (Peter G.) wrote:

>
> Meget enkelt problem, men jeg kan ikke rigtig finde en løsning.
>
> Jeg har et basalt bash script som gerne skulle gå igennem et par
> vilkårlige subdirectories og udføre nogle kommandoer for hvert dir.
>
> Til dette brugte jeg løkken
> for dir in `find /path/to/hoveddir -type d -print` ; do
> cd "$dir"
> [kommandoer for dir]
> done
>
> Men dette giver mig problemer med dir-navne der indeholder
> mellemrum. Hvorledes overkommer jeg dette?
du skal sætte IFS

>
> --
> Regards, Peter
> Topposters and other annoying elements will be killfiled in silence.


--
//Jacob Gaarde
//Dont reply to my (aparent) e-mail address. Instead Use
//e-mail : gaarde <at> mailme <dot> dk

Mogens Kjaer (21-06-2005)
Kommentar
Fra : Mogens Kjaer


Dato : 21-06-05 08:16

Peter G. wrote:

> for dir in `find /path/to/hoveddir -type d -print` ; do
> cd "$dir"
> [kommandoer for dir]
> done

http://www.splike.com/howtos/bash_faq.html

find /path/to/hoveddir -type d -print | while read dir
do
cd "$dir"
pwd
done

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

Peter G. (22-06-2005)
Kommentar
Fra : Peter G.


Dato : 22-06-05 18:58

Mogens Kjaer <mk@crc.dk> writes:

> http://www.splike.com/howtos/bash_faq.html
>
> find /path/to/hoveddir -type d -print | while read dir
> do
> cd "$dir"
> pwd
> done

Dette virker perfekt. Tak til dig og alle de andre postere i denne tråd.

--
Regards, Peter
Topposters and other annoying elements will be killfiled in silence.

Klaus Alexander Seis~ (21-06-2005)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 21-06-05 08:17

Peter G. skrev:

> Jeg har et basalt bash script som gerne skulle gå igennem et par
> vilkårlige subdirectories og udføre nogle kommandoer for hvert dir.
>
> Til dette brugte jeg løkken
> for dir in `find /path/to/hoveddir -type d -print` ; do
> cd "$dir"
> [kommandoer for dir]
> done
>
> Men dette giver mig problemer med dir-navne der indeholder
> mellemrum. Hvorledes overkommer jeg dette?

Det enkleste vil nok være at bruge read. Fx

#v+

find /path/to/hoveddir -type d -print \
| while read dir
do
cd "${dir}"
: etc.
done

#v-

En anden løsning kunne være at benytte "find -print0" kombineret
med "xargs -r0". Se manualsiden for de to kommandoer.

Mvh,

--
Klaus Alexander Seistrup
Magnetic Ink, Copenhagen, Denmark
http://magnetic-ink.dk/

Christian Iversen (21-06-2005)
Kommentar
Fra : Christian Iversen


Dato : 21-06-05 15:05

Peter G. wrote:

>
> Meget enkelt problem, men jeg kan ikke rigtig finde en løsning.
>
> Jeg har et basalt bash script som gerne skulle gå igennem et par
> vilkårlige subdirectories og udføre nogle kommandoer for hvert dir.
>
> Til dette brugte jeg løkken
> for dir in `find /path/to/hoveddir -type d -print` ; do
> cd "$dir"
> [kommandoer for dir]
> done
>
> Men dette giver mig problemer med dir-navne der indeholder
> mellemrum. Hvorledes overkommer jeg dette?

find /path -type d -print0 | xargs -0i <kommando>

eller bare

find /path -type d -exec <kommando> ';'


--
M.V.H
Christian Iversen

Søg
Reklame
Statistik
Spørgsmål : 177549
Tips : 31968
Nyheder : 719565
Indlæg : 6408820
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste