sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #89398
Re: find ./ og filer med mellerum, hvordan?
tir, 03 10 2006 kl. 23:49 +0200, skrev Jon Bendtsen:
> Den tirsdag 3.okt kl. 23:44 skrev Christoffer Holm Kjølbæk:
>
> > tir, 03 10 2006 kl. 23:40 +0200, skrev Kim Schulz:
> >> On Tue, 03 Oct 2006 23:21:39 +0200
> >> Christoffer Holm Kjølbæk <linux@xxxxxxxxxxxx> wrote:
> >>
> >>> tir, 03 10 2006 kl. 23:19 +0200, skrev Kim Schulz:
> >>>> On Tue, 03 Oct 2006 22:45:31 +0200
> >>>> Christoffer Holm Kjølbæk <linux@xxxxxxxxxxxx> wrote:
> >>>>
> >>>>> Hej,
> >>>>>
> >>>>> Jeg har lavet dette lille script, så skal sørge for at alt min
> >>>>> musik har de rigtige rettigheder.
> >>>>>
> >>>>> sudo chown mythtv:mythtv * -R
> >>>>> sudo chmod 777 * -R
> >>>>> for i in $( find ./ -name '*.ogg');
> >>>>> do chmod 666 $i;
> >>>>> done
> >>>>>
> >>>>> Det virker ganske godt, lige indtil den finde en fil der har et
> >>>>> mellem rum i navnet.
> >>>>>
> >>>>> Jeg tror det der sker er at den tolke mellemrummet som en slags
> >>>>> separator (hvilket det jo er :) Men hvis en fil hedder "foo
> >>>>> bar.ogg", så ser den det som to filer, foo og bar.ogg
> >>>>>
> >>>>> Hvordan klare man lige den?
> >>>>
> >>>> smid "" omkring $i
> >>>
> >>> Det giver stadig det samme:
> >>> chmod: kan ikke tilgå './The_Offspring/Smash/11': Ingen sådan fil
> >>> eller filkatalog
> >>> chmod: kan ikke tilgå '-': Ingen sådan fil eller filkatalog
> >>> chmod: kan ikke tilgå 'What_Happened_to_You_.ogg': Ingen sådan fil
> >>> eller filkatalog
> >>>
> >>> Filen hedder ./The_Offspring/Smash/11 - What_Happened_to_You_.ogg
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >> prøv
> >> chmod 666 - "$i"
> >
> > Det giver det samme...
>
> Det gør det nemlig, for problemet ligger højere oppe i scripted.
> Problemet ligger i linien
> for i in $( find ./ -name '*.ogg');
> eller faktisk før.
>
> Ser du, problemet er IFS variablen. Den er normalt sat til ALT
> whitespace, dvs.
> mellemrum, tab og newline. For at løse dit problem skal du sætte den
> til fx. kun
> newline. Det gør du hen over 2 linier på denne måde
>
> OLDIFS=$IFS
> IFS="
> "
> for i in $(...
> IFS=$OLDIFS
>
>
> Men der er også en helt anden mulighed, og det er dette
> ind ./ -name '*.ogg' -exec chmod 666 "{}" \;
Det virker perfekt, takker :)
>
>
>
> JonB
>
>
>
>
>
References
-
find ./ og filer med mellerum, hvordan?
From: Christoffer Holm Kjølbæk, 2006-10-03
-
Re: find ./ og filer med mellerum, hvordan?
From: Kim Schulz, 2006-10-03
-
Re: find ./ og filer med mellerum, hvordan?
From: Christoffer Holm Kjølbæk, 2006-10-03
-
Re: find ./ og filer med mellerum, hvordan?
From: Kim Schulz, 2006-10-03
-
Re: find ./ og filer med mellerum, hvordan?
From: Christoffer Holm Kjølbæk, 2006-10-03
-
Re: find ./ og filer med mellerum, hvordan?
From: Jon Bendtsen, 2006-10-03