Citat:
Ursprungligen postat av pereli
OBS Jag är helt ny när det gäller bashprogrammering.
Jag vill se hur stort varje hembibliotek är för vissa specifika användare (vilka finns inlagda i variabeln anv). Jag har gjort såhär:
Kod:
echo `du -h -s /home/${anv[$n]}`
Problemet är det att användarna inte ligger direkt i /home/ utan i olika undermappar som dessutom ligger olika djupt. Därför funkar det inte att skriva t ex. "/home/*/${anv[$n]}" då jag bara får med vissa användare.
Hoppas någon kan ge mig en något sånär enkel lösning.
Under förutsättning att dina användares sökväg till hemkatalogerna börjar med /home, så kan detta användas och att du har en standard passwd-fil.
Kommandot använder kolon som separator, precis som i din passwd-fil.
Kod:
awk -F":" '/:\/home/{print $6}' /etc/passwd | xargs du -sh
Kort och gott, den letar efter förekomsten :/home i /etc/passwd filen, om den hittas så printas kolumn 6 från den raden och skickas vidare till xargs som sin tur skickar argumentet till du -sh.
Du måste normalt också ha root-rättigheter för att kan exekvera du -sh på alla användares hemkataloger.
Men eftersom du nämner vissa specifika användare, så kanske ovanstående inte passar dig, eftersom den tar alla användare med sökvägen /home.
Det kan du fixa med for-loop, while eller whatever, t ex nedan.
Kod:
for user in user1 user2 user3
do
awk -F":" '/home/{print $6}' /etc/passwd | xargs du -sh | grep $user
done