Zápočtová úloha 7, F2470

Zadání: Najdi ve svém home deset největších souborů a vypiš je i s jejich velikostí a časem poslední modifikace, seřazené podle velikosti. Nehledej v ~/tmp.

Úlohu lze vyřešit relativně snadno, příkazem na jeden řádek. Popíši stručně, jak jsem jej sestavil.


Je zřejmé, že budu potřebovat find, hledám v home volbou ~ a chci pouze soubory omezením -type f. Adresář ~/tmp vyloučím negací cesty k němu ! -path ~/tmp

$ find ~ -type f ! -path ~/tmp

Pro tisknutí výsledků použiji vnitřní příkaz -printf "%kkb %TD %TH:%TM %f\n", který vytiskne nalezené výsledky na standartní výstup s formátováním zadaným v uvozovkách. Nejprve vytiskne velikost v kb %kkb, pak datum %TD, čas %TH:%TM, jméno souboru %f a odřádkuje \n.

$ find ~ -type f ! -path ~/tmp -printf "%kkb %TD %TH:%TM %f\n"

Výsledky se dále setřídí pomocí sort -k1nr, kde formát značí třídění podle prvního sloupce, numericky a od největšího k nejmenšímu. Teď už jen jednoduše oříznu prvních 10 příkazem head. Celkem je tedy příkaz následující:

$ find ~ -type f ! -path ~/tmp -printf "%kkb %TD %TH:%TM %f\n" | sort -k1nr | head