Bash terminal scripje: lijn uitlezen
23 november 2005 - 18:10   
geplaatst door: fredmatrack
Ik moet voor school een scriptje schrijven voor netwerkbeheer allerhande. Als trouwe Mac-gebruiker wil ik dat graag met bash doen.

Ik heb al wat gevonden, maar nu zit ik echt vast. Als ik m'n script draai, krijg ik volgende output:

Geef directory op:
/Users/
52      Shared
16993372        geerthuy

Totale grootte: 17 Gb

De code die hier achter steekt:

for file in *
       do
           du -ks $file
       done

Nu zou ik graag per map/file willen controleren of die groter is dan bijvoorbeeld 1000. Maar hoe kan ik die grootte in een variabele krijgen?

Ik had zelf al gedacht om die lijn "52 Shared" uit te lezen tot aan de eerte spatie en dat in een variabele te stoppen. Kan dit? Hoe? Of is er een betere methode?

Alvast bedankt!

Bash terminal scripje: lijn uitlezen
23 november 2005 - 18:21    reactie #1
geplaatst door: Thomas
Ik denk dat je met sed of met awk je resultaat zult moeten parsen en de output daarvan dan weer kan gebruiken...
dus begin eens met:
man sed
man awk

Volgens experts-exchange is awk de beste oplossing.


for file in *
      do
          fsize=`du -ks $file | awk '{print $1}'`
          if [ fsize -le 1000  ]
          then
                 //doe wat je moet doen
          fi
      done

(Bewerkt door Thomas om 18:39, 23-11-2005)

Wat ik hier uitkraam is puur mijn persoonlijke mening.
Bash terminal scripje: lijn uitlezen
23 november 2005 - 22:48    reactie #2
geplaatst door: fredmatrack
Ik krijg hier een foutje en ik geraak er niet aan uit:
344     standalone
./test.sh: line 51: [: fsize: integer expression expected

Ziet er iemand de fout?

Bash terminal scripje: lijn uitlezen
25 november 2005 - 12:56    reactie #3
geplaatst door: fredmatrack
Opgelost, er stond een spatie'tje te veel.