par exemple, j'ai une commande qui montre combien d'espace le dossier prend
du folder | sort -n
cela fonctionne très bien, mais j'aimerais avoir une forme lisible par l'homme
du -h folder
cependant, si je le fais, je ne peux pas le trier comme numérique.
Comment joindre du folder
et du -h folder
pour voir le résultat trié en tant que du folder
, mais avec la première colonne de du -h folder
P.S. C'est juste un exemple. cette technique pourrait être très utile pour moi (si c'est possible)
Voici une approche plus générale. Obtenez le résultat de du folder
et du -h folder
dans deux fichiers différents.
du folder > file1
du -h folder > file2
La partie clé est la suivante: concaténer file1
et file2
ligne par ligne, avec un délimiteur approprié.
paste -d '#' file1 file2 > file3
(en supposant que #
n'apparaisse pas dans file1
et file2
)
Maintenant, triez file3
. Notez que ceci triera sur le contenu de file1
et divisera par les liens de file2
. Extrayez le résultat pertinent en utilisant cut
:
sort -n -k1,7 file3 | cut -d '#' -f 2
Regardez également man sort
pour d'autres options.
Vous pouvez également enregistrer ceci sous un alias, pour une utilisation ultérieure. Pour ce faire, ajoutez ce qui suit au bas de ~/.bashrc
:
sorted-du () {
paste -d '#' <( du "$1" ) <( du -h "$1" ) | sort -n -k1,7 | cut -d '#' -f 2
}
Ensuite, ouvrez une nouvelle session de terminal et exécutez votre nouvel alias:
sorted-du /home
Essayez quelque chose comme:
du -h folder | sort -h
Alternatives: -n
pour le tri numérique
Remarque: l'option de tri -h
n'existe que dans les versions les plus récentes d'Ubuntu.
Cette réponse est valable pour 10.04.4LTS et les versions inférieures d’Ubuntu.
Malheureusement, la réponse exacte qui trie K M G est difficile et complexe:
Vous pouvez aliaser toute la commande du avec une commande qui trie les informations lisibles à l’aide de cette commande.
alias duf='du -sk * | sort -n | Perl -ne '\''($s,$f)=split(m{\t});for (qw(K M G)) {if($s<1024) {printf("%.1f",$s);print "$_\t$f"; last};$s=$s/1024}'\'
que j'ai trouvé ici
http://www.earthinfo.org/linux-disk-usage-sorted-by-size-and-human-readable/
il suffit de cd dans le dossier que vous souhaitez connaître, puis duf
vous pouvez ajouter cet alias duf à la fin de votre /home/user/.profile pour rendre la commande duf semi-permanente
résultats:
user@hostname:~$ duf 0.0K Documenten 0.0K Muziek 0.0K Openbaar 0.0K Sjablonen 0.0K Video's 4.0K backup_db.sql.g 4.0K examples.desktop 12.0K xml printer ticket 52.0K hardinfo_report.html 152.0K librxtxSerial.so 2.7M jpos 4.4M nxclient_3.5.0-7_AMD64.deb 6.4M nxnode_3.5.0-4_AMD64.deb 6.8M Downloads 7.4M nxserver_3.5.0-5_AMD64.deb 12.4M NetBeansProjects 18.1M mysqlworkbench.deb 28.3M Afbeeldingen 45.8M ergens-20110928-18.sql.gz 60.5M 2012-06-02ergens_archive.tar.gz 65.5M 2012-08-26ergens_archive.tar.gz 65.6M 2012-08-28ergens_archive.tar.gz 65.6M 2012-08-29ergens_archive.tar.gz 65.7M 2012-08-30ergens_archive.tar.gz 113.0M Bureaublad 306.2M ergens-20110928-18.sql
Voici pourquoi du -sch /var/* | sort -n
ne fonctionne pas, voir le tri de MKKMMKKMMK
user@hostname:~$ du -sch /var/* |sort -n 0 /var/crash 0 /var/local 0 /var/lock 0 /var/opt 8,0M /var/backups 12K /var/games 16K /var/tmp 17M /var/log 68M /var/cache 104K /var/spool 144K /var/run 351M /var/lib 443M totaal 704K /var/mail
La commande GNU _ sort
a l'option suivante:
-h
,--human-numeric-sort
compare les nombres lisibles par l'homme (par exemple, 2K 1G).Pour avoir cette option sous BSD/OSX, vous pouvez installer
sort
à partir decoreutils
(viabrew
name__) et ajouter le dossier bin à votrePATH
dans vos fichiers rc.
Donc, la commande ressemblerait à ceci:
du -ah . | sort -rh | head -20
Ouvrez votre terminal avec Ctrl+Alt+t et type:
du -sk * | sort -rn
Celui-ci gère les noms de fichiers avec des espaces ou des apostrophes, et fonctionne sur les systèmes qui ne supportent pas xargs -d
ou sort -h
:
du -s * | sort -n | cut -f2 | tr '\n' '\0' | xargs -0 -I {} du -sh "{}"
qui se traduit par:
368K diskmanagementd
392K racoon
468K coreaudiod
472K securityd
660K sshd
3.6M php-fpm
Pour les versions récentes d'Ubuntu, utilisez du -h directory | sort -h
.
J'utilise une forme de ceci tout le temps pour trouver des fichiers hors de contrôle.
Celui que j’ai trouvé qui fonctionne sur tous les systèmes quelle que soit la version (sort -h
ne fonctionne pas pour moi) est
du -h $(du * | sort -n | awk '{print $2}')
awk '{print $2}'
imprime essentiellement les noms de fichiers.