Portál AbcLinuxu, 15. května 2024 23:38
du /home/finn/ | sort | head
Schválně jsem vynechal parametry všech příkazů a omáčku okolo, abys to neměl až tak snadné (chceš se přeci něco nového naučit, že?).
usage: du.py [options] [-d DIR] where directory will be searched for largest subdirectory options: --version show program's version number and exit -h, --help show this help message and exit -d DIR directory (default is current)Za parametr "-d" se píše název adresáře, který se má prohledávat (defaultně se bere ten aktuální). V něm najde podadresář, který zabírá nejvíc a pokud existuje, tak vypíše jeho název a velikost.
#!/usr/bin/env python import os, sys from optparse import OptionParser def getdirsize(base): size = 0 for root, dirs, files in os.walk(base): for file in files: filepath = os.path.join(root, file) if os.path.islink(filepath): continue size = size + os.path.getsize(filepath) return size usage = "usage: %prog [options] [-d DIR]\n\ where directory will be searched for largest subdirectory" parser = OptionParser(usage, version="%prog version 0.1") parser.add_option("-d", action = "store", type = "string", default = os.getcwd(), dest="dir", help="directory (default is current)") (options, args) = parser.parse_args() if not os.path.isdir(options.dir): print "Sorry, %s is not a valid directory" %options.dir sys.exit(-1) size_max = -1 for directory in os.listdir(options.dir): dir_fullpath = os.path.join(options.dir, directory) if not os.path.isdir(dir_fullpath): continue size = getdirsize(dir_fullpath) if size > size_max: size_max = size dir_max = directory if size_max != -1: print 'Directory "%s" contains largest subdirectory\n\ "%s", with size of %d bytes.'%(options.dir, dir_max, size_max) else: print 'Directory "%s" does not contain any subdirectory' %options.dir
find . -maxdepth 0 -type d -print0 | xargs -0 du | sort -k 1 -g | tail -n 10ale opravdu celý program napsaný od začátku až do konce, který má help, optiony, jakous takous kontrolu chyb a aspoň trochu se snaží komunikovat s uživatelem. Uvidíte, že oněch "pět řádků" spotřebujete jen na výpisy výsledků.
du -s * | sort -n -r | headPřípadně zapnout
shopt -s dotglob
pro skryté adresáře.
$ du -s * du: invalid option -- du: invalid option -- o du: invalid option -- u du: invalid option -- e du: invalid option -- n du: invalid option -- t du: invalid option -- r du: invalid option -- n du: invalid option -- i du: invalid option -- du: invalid option -- f du: invalid option -- i du: invalid option -- yAsi mám v názvech souborů mezery ...
du -s -- *
Tak mě ale napadlo, že velmi zlomyslný učitel by mohl chtít
find -type d -print0 | xargs -0 du -Ss -- | sort -n -r | headOsobně bych si vyžádal upřesnění pojmu soubory v adresáři
$ du --version du (GNU coreutils) 5.3.0 Written by Torbjorn Granlund, David MacKenzie, Paul Eggert, and Jim Meyering. Copyright (C) 2005 Free Software Foundation, Inc. Toto je volné programové vybavení; podmínky pro kopírování a rozšiřování naleznete ve zdrojových textech. Toto programové vybavení je zcela BEZ ZÁRUKY, a to i bez záruky PRODEJNOSTI nebo VHODNOSTI PRO NĚJAKÝ KONKRÉTNÍ ÚČEL.
bash
při expanzi problém s mezerama, tak by to bylo dost smutné. Problém má du
s argumentem začínajícím na pomlčku.
find -maxdepth 1 -mindepth 1 -type d -print0 | xargs -0 du -s -- | sort -nr | headnebo
find -type d -print0 | xargs -0 du -sS -- | sort -nr | headPodle toho co se myslí pojmem soubory v adresáři, případně první případ bez -maxdepth nebo -mindepth podle toho co tím zadáním chtěl vlastně básník říct.
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.