たとえば、フォルダに必要なスペースを示すコマンドがあります
du folder | sort -n
それはうまくいきますが、人間が読める形式にしたいです
du -h folder
ただし、それを行うと、数値としてソートできません。
du folder
とdu -h folder
を結合して、du folder
としてソートされ、du -h folder
の最初の列がある出力を表示する方法
追伸これは単なる例です。このテクニックは私にとって非常に役立つかもしれません(可能な場合)
より一般的なアプローチを次に示します。 2つの異なるファイルでdu folder
およびdu -h folder
の出力を取得します。
du folder > file1
du -h folder > file2
重要な部分はこれです:file1
とfile2
を適切な区切り文字で行ごとに連結します。
paste -d '#' file1 file2 > file3
(#
がfile1
およびfile2
に表示されないと仮定します)
file3
をソートします。これは、file1
の内容に基づいてソートされ、file2
の内容でタイを解除することに注意してください。 cut
を使用して関連する結果を抽出します。
sort -n -k1,7 file3 | cut -d '#' -f 2
他のオプションについては、man sort
もご覧ください。
これをエイリアスとして保存して、後で再利用することもできます。これを行うには、~/.bashrc
の最後に次を追加します。
sorted-du () {
paste -d '#' <( du "$1" ) <( du -h "$1" ) | sort -n -k1,7 | cut -d '#' -f 2
}
次に、新しいターミナルセッションを開き、新しいエイリアスを実行します。
sorted-du /home
次のようなものを試してください:
du -h folder | sort -h
代替案:-n
数値ソート用
注:sortの-h
オプションは、Ubuntuの新しいバージョンにのみ存在します。
この回答は、10.04.4LTS以下のUbuntuで有効です。
残念ながら、K M Gを分類する正確な答えは難しく、複雑です。
あなたはこれを使用して人間が読めるものをソートするものでduコマンド全体をエイリアス化できます
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}'\'
ここで見つけた
http://www.earthinfo.org/linux-disk-usage-sorted-by-size-and-human-readable/
知りたいフォルダにcdだけでduf
このdufエイリアスを/home/user/.profileの最後に追加して、dufコマンドを半永久的にすることができます。
結果:
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
du -sch /var/* | sort -n
が機能しない理由は次のとおりです。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
コマンドGNU sort
には次のオプションがあります。
-h
、--human-numeric-sort
は、人間が判読可能な数値(2K 1Gなど)を比較します。BSD/OSXでこのオプションを使用するには、
sort
から(coreutils
を介して)brew
をインストールし、PATH
にbinフォルダーをrcに追加します。ファイル。
したがって、コマンドは次のようになります。
du -ah . | sort -rh | head -20
で端末を開きます Ctrl+Alt+t そしてタイプ:
du -sk * | sort -rn
これは、空白またはアポストロフィでファイル名を処理し、xargs -d
またはsort -h
をサポートしないシステムで動作します:
du -s * | sort -n | cut -f2 | tr '\n' '\0' | xargs -0 -I {} du -sh "{}"
その結果:
368K diskmanagementd
392K racoon
468K coreaudiod
472K securityd
660K sshd
3.6M php-fpm
Ubuntuの最近のバージョンでは、du -h directory | sort -h
を使用します。
制御不能なファイルを見つけるために、この形式を常に使用しています。
バージョンに関係なくすべてのシステムで動作していることがわかりました(sort -h
は動作しません)
du -h $(du * | sort -n | awk '{print $2}')
awk '{print $2}'
は基本的にファイル名を出力します。