Portál AbcLinuxu, 10. května 2025 13:30
Měl bych následující prosbu. Potřebuji vytvořit script v Shellu s následujícími parametry. Script, který jako parametr dostane jméno uživatele najde všechny soubory (na všech připojených discích), které uživateli patří, spočte jejich celkovou délku a spočte počet i-nodes, které uživatel zabírá. Z těchto souborů následně sestaví seznam, kde bude vždy uveden na prvním místě adresář (včetně plné cesty) a dále odsazeně seznam souborů, které v daném adresáři jsou a patří uživateli.
Můžete mi prosím někdo poradit? Děkuji
Jsem úplný laik takže neumím zhola nic 8o((
find / -type f -user "$1" -print0 | du -c --files0-from -jak s těmi inody to už mne nic jednoduchého nenapadá, ale asi bude nějaká utilita co zjistí počet inodů které patří uživateli i když to by asi nebylo přesně to co je myšleno :) a ten výpis adresářů třeba takto:
find / -user "$1" | xargs -I {} dirname "{}" | sort | uniq > /tmp/list.tmp while read; do echo $REPLY; find $REPLY -user "$1"; | xargs -n 1 -I {} echo -e "\t{}"; echo; done < /tmp/list.tmpno nevypadá to úplně triviálně, asi budete muset také přidat ruku k dílu a napsat to nějak lépe...
while read; do echo $REPLY; find $REPLY -user "$1"; | xargs -n 1 -I {} echo -e "\t{}"; echo; done < /tmp/list.tmpna
while read; do echo $REPLY; find $REPLY -user "$1" | xargs -n 1 -I {} echo -e "\t{}"; echo; done < /tmp/list.tmp
find / -user "$1" | xargs -I {} dirname "{}" | sort | uniq | while read; do echo $REPLY; find $REPLY -user "$1" | xargs -n 1 -I {} echo -e "\t{}"; echo; doneať se v tom pokud možno nikdo nevyzná ;)
Prvni cast zadani se da vyresit pomoci prikazu find
(viz man find
). Volba -user
zajisti vypsani souboru pro zadaneho uzivatele, pro vypsani souboru je treba jeste volba -type f
. Velikost souboru se da zjistit pomoci prikazu ls -l soubor
, vyfiltrovanim napr. pomoci awk
(viz man awk
) a ulozenim do promene. Kazdy soubor zabira 1 inode, takze pro pocet inodu staci akorat spocitat pocet souboru vracenych prikazem find
.
Zkuste se mrknout do tech manualovych stranek a vymyslet, jak by ten skript mel presneji fungovat. Kdyz narazite na problem, jsem si jisty, ze se tady na abclinuxu najde dostatek lidi, kteri vam jej radi pomohou vyresit.
stat -c "%s"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.