|
For-loop
|
For-loop
#1890109
15/11/2014 12:23
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Hei jeg skal bruke en for-løkke til å telle antall filer i en katalog, Hvordan får man den rapportere bare antallet .Jeg har prøvd med noe sånt: if [ -f ls-1|wc -l $x ] ,men da teller den opp hver gang løkken går rundt altså tallet 1 tretten ganger istedenfor 13.
Redigert av Morteen; 15/11/2014 12:25.
|
|
|
Re: For-loop
[Re: Morteen]
#1890113
15/11/2014 12:56
|
Registrert: Aug 2006
Innlegg: 8,300
polkaDOT
Søk hjelp!
|
Søk hjelp!
Registrert: Aug 2006
Innlegg: 8,300 |
Hva med å sette en counter. Nå er det lenge siden jeg har gjort noe batch scripting, men i andre språk hadde jeg gjort noe int count = 0; og for hver fil, hadde jeg gjort noe ++count;
Så printer du ut count.
|
|
|
Re: For-loop
[Re: Morteen]
#1890165
15/11/2014 17:24
|
Registrert: Apr 2005
Innlegg: 647
helomoto
Avhengig
|
Avhengig
Registrert: Apr 2005
Innlegg: 647 |
Sier oppgaven at du må bruke en for-løkke? Må alt skje inne i for-løkken, eller kan du telle etterpå med wc? echo *| wc -w
Eller hvis du bare vil ha filer, ikke dirs: for f in *; do [[ -d "$f" ]] || echo "$f" ; done |wc -w
Må alt skje i løkken, kan du bruke en counter. for f in *; do [[ -d "$f" ]] || ((i++)); done echo $i
> Assos er laget for korpulente sveitsiske bankfolk.
|
|
|
Re: For-loop
[Re: Morteen]
#1890176
15/11/2014 18:06
|
Registrert: Aug 2007
Innlegg: 3,859
Loki
Besatt
|
Besatt
Registrert: Aug 2007
Innlegg: 3,859 |
Mange muligheter her, for loop virker litt kunstig, ville valgt noe sånt tror jeg:
find -type f | wc -l
He took the road less travelled, but somehow won out in the end
|
|
|
Re: For-loop
[Re: Morteen]
#1890179
15/11/2014 18:11
|
Registrert: Jun 2009
Innlegg: 1,471
Ola R.
Veteran
|
Veteran
Registrert: Jun 2009
Innlegg: 1,471 |
Er ikke find-kommandoen rekursiv, slik at den tar med alle underkataloger også? Også må startsted angis, f.eks ".", slik:
find . -type f | wc -l
|
|
|
Re: For-loop
[Re: Morteen]
#1890181
15/11/2014 18:17
|
Registrert: May 2010
Innlegg: 767
Liol
Ringrev
|
Ringrev
Registrert: May 2010
Innlegg: 767 |
Hvis du virkelig må bruke en for-loop så ville jeg gjort noe slikt:
#!/bin/bash
i=0
for f in *; do
if [ -f "$f" ]; then
i=$((i+1))
fi
done
echo $i
|
|
|
Re: For-loop
[Re: Morteen]
#1890184
15/11/2014 18:30
|
Registrert: Sep 2008
Innlegg: 494
pogoman
Entusiast
|
Entusiast
Registrert: Sep 2008
Innlegg: 494 |
ls -l | grep '^-' | wc -l
|
|
|
Re: For-loop
[Re: Ola R.]
#1890186
15/11/2014 18:38
|
Registrert: Aug 2007
Innlegg: 3,859
Loki
Besatt
|
Besatt
Registrert: Aug 2007
Innlegg: 3,859 |
Er ikke find-kommandoen rekursiv, slik at den tar med alle underkataloger også? Også må startsted angis, f.eks ".", slik:
find . -type f | wc -l Jo, GNU find har dog . som default, depth kan brukes dersom rekursivt søk er uønsket: find -type f -depth 1
He took the road less travelled, but somehow won out in the end
|
|
|
Re: For-loop
[Re: Morteen]
#1890193
15/11/2014 19:17
|
Registrert: Jun 2007
Innlegg: 1,714
Brumm
Ivrig
|
Ivrig
Registrert: Jun 2007
Innlegg: 1,714 |
echo $(($(ls -l | grep -v ^d | wc -l)-1))
|
|
|
Re: For-loop
[Re: Ola R.]
#1890205
15/11/2014 19:56
|
Registrert: May 2007
Innlegg: 1,279
schnappi
Krokoknøtt
|
Krokoknøtt
Registrert: May 2007
Innlegg: 1,279 |
Er ikke find-kommandoen rekursiv, slik at den tar med alle underkataloger også? -maxdepth 1 burde kunne hjelpe. Ellers er dette en oppgave for find, ikke en for-løkke. Kombinasjoner med ls må quotes riktig, og det er *skikkelig* mas (kataloger med \n i navn og denslags...)
Redigert av schnappi; 15/11/2014 19:57.
Ich bin Schnappi, das KLEINe Krokodil
|
|
|
Re: For-loop
[Re: Morteen]
#1890214
15/11/2014 20:32
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Jeg løste i utgangspunktet oppgaven med ls -1|grep ^-|wc -l men fikk en kommentar at en for-løkke var det læreren var ute etter. Får prøve forslagene deres , mange takk !
|
|
|
Re: For-loop
[Re: helomoto]
#1890221
15/11/2014 21:03
|
Registrert: Jan 2012
Innlegg: 1,399
trondmm
Veteran
|
Veteran
Registrert: Jan 2012
Innlegg: 1,399 |
Eller hvis du bare vil ha filer, ikke dirs: for f in *; do [[ -d "$f" ]] || echo "$f" ; done |wc -w Denne feiler hvis det er noe annet enn kataloger og filer i katalogen
|
|
|
Re: For-loop
[Re: schnappi]
#1890229
15/11/2014 21:09
|
Registrert: Jan 2012
Innlegg: 1,399
trondmm
Veteran
|
Veteran
Registrert: Jan 2012
Innlegg: 1,399 |
Er ikke find-kommandoen rekursiv, slik at den tar med alle underkataloger også? -maxdepth 1 burde kunne hjelpe. og "-mindepth 1" hvis neste oppgave er å telle kataloger. Ellers er dette en oppgave for find, ikke en for-løkke. Kombinasjoner med ls må quotes riktig, og det er *skikkelig* mas (kataloger med \n i navn og denslags...) Trenger ikke newline for å skape krøll. vanlig mellomrom er en god kilde til kluss
|
|
|
Re: For-loop
[Re: Morteen]
#1890551
17/11/2014 11:30
|
Registrert: Oct 2011
Innlegg: 3,463
Rene
Besatt
|
Besatt
Registrert: Oct 2011
Innlegg: 3,463 |
På videregående sleit jeg også med lærere som krevde mer kompliserte svar enn oppgaven krevde. Min IT-lærer ble sur da jeg fant måter som var enklere enn hans måte å gjøre ting på, siden han ikke hadde kommet på dem først.
|
|
|
Re: For-loop
[Re: Rene]
#1890563
17/11/2014 11:47
|
Registrert: Jan 2012
Innlegg: 1,399
trondmm
Veteran
|
Veteran
Registrert: Jan 2012
Innlegg: 1,399 |
På videregående sleit jeg også med lærere som krevde mer kompliserte svar enn oppgaven krevde. Min IT-lærer ble sur da jeg fant måter som var enklere enn hans måte å gjøre ting på, siden han ikke hadde kommet på dem først. Saken er vel heller at hensikten med oppgaven er å lære seg å bruke for-løkker, ikke å telle antall filer. Da er det ikke noe poeng i å løse oppgaven uten bruk av for. Uansett hvor mye mer effektiv filtellemåten din var.
|
|
|
Re: For-loop
[Re: Morteen]
#1890593
17/11/2014 12:41
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Læreren godkjente oppgaven med ls - ,men jeg ble litt irritert på meg selv når jeg ikke klarte å se hvordan man skulle bruke for-løkke. Nå har jeg levert med begge alternativene . :-)
|
|
|
Re: For-loop
[Re: Morteen]
#1890624
17/11/2014 13:38
|
Registrert: May 2009
Innlegg: 9,144
fredriks
Søk hjelp!
|
Søk hjelp!
Registrert: May 2009
Innlegg: 9,144 |
Jag vet inte ens vilket program dere snakker om... (unix/linux)? men en for loop för att räkna filer i en katalog tycker jag verkar vara en rar oppgave. En for loop använder man ju när man vet hur många gånger man ska göra något och i detta fallet är det väl just det man vill få fram.
En while loop borde väl vara bättre om man vill ha en loop.
Men möjligt att jag helt missar vad man ska göra i detta programet.
Redigert av fredriks; 17/11/2014 15:20.
|
|
|
Re: For-loop
[Re: Morteen]
#1891237
18/11/2014 19:19
|
Registrert: Aug 2006
Innlegg: 8,300
polkaDOT
Søk hjelp!
|
Søk hjelp!
Registrert: Aug 2006
Innlegg: 8,300 |
Hva er det du studerer egentlig?
Enig med fredriks, skal det være en løkke, så heller en while (så lenge det er elementer i mappen).
|
|
|
Re: For-loop
[Re: Morteen]
#1891375
19/11/2014 04:26
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
|
|
|
Re: For-loop
[Re: Morteen]
#1891502
19/11/2014 10:20
|
Registrert: May 2007
Innlegg: 1,279
schnappi
Krokoknøtt
|
Krokoknøtt
Registrert: May 2007
Innlegg: 1,279 |
Beklager at jeg ikke kom på denne med en gang. En klassiker.
Ich bin Schnappi, das KLEINe Krokodil
|
|
|
Re: For-loop
[Re: schnappi]
#1891531
19/11/2014 10:58
|
Registrert: May 2009
Innlegg: 3,952
Lurifax
Besatt
|
Besatt
Registrert: May 2009
Innlegg: 3,952 |
Beklager at jeg ikke kom på denne med en gang. En klassiker. hehe, inte dum inte 
______________________________________________________________ "Det er greit om du er uenig med meg. Jeg kan ikke tvinge deg til å ha rett."
|
|
|
Re: For-loop
[Re: trondmm]
#1891582
19/11/2014 12:05
|
Registrert: Aug 2007
Innlegg: 3,859
Loki
Besatt
|
Besatt
Registrert: Aug 2007
Innlegg: 3,859 |
Ellers er dette en oppgave for find, ikke en for-løkke. Kombinasjoner med ls må quotes riktig, og det er *skikkelig* mas (kataloger med \n i navn og denslags...) Trenger ikke newline for å skape krøll. vanlig mellomrom er en god kilde til kluss Med -print0 opsjonen til find og --null til xargs kan man unngå en del problemer: find ... -print0 | xargs --null ... Eksempel (trivielt): $ find | xargs ls -dl ls: cannot access ./Filnavn: No such file or directory ls: cannot access med: No such file or directory ls: cannot access linjeskift: No such file or directory ls: cannot access Dette: No such file or directory ls: cannot access er: No such file or directory ls: cannot access linje: No such file or directory ls: cannot access 2: No such file or directory drwxr-xr-x 2 user grp 60 Nov 19 12:59 . $ find -print0 | xargs --null ls -dl drwxr-xr-x 2 user grp 60 Nov 19 12:59 . -rw-r--r-- 1 user grp 0 Nov 19 12:59 ./Filnavn med linjeskift ?Dette er linje 2
He took the road less travelled, but somehow won out in the end
|
|
|
Re: For-loop
[Re: Morteen]
#1892228
20/11/2014 19:36
|
Registrert: Aug 2006
Innlegg: 8,300
polkaDOT
Søk hjelp!
|
Søk hjelp!
Registrert: Aug 2006
Innlegg: 8,300 |
Tenkte mer på utdannelsen du tar.
|
|
|
Re: For-loop
[Re: Morteen]
#1892255
20/11/2014 20:35
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Årstudium i Informasjonsbehandling ved Høyskolen i Telemark
|
|
|
|
|