すべてのディレクトリを一覧表示し、サイズで並べ替え
大きなサイズのデータを保持するためのハードドライブが手頃な価格で現在入手可能であるため、限られたハードドライブのメモリ容量の日々は終わったようです。ただし、大容量のハードドライブは必要ないが、ハードドライブがいっぱいであると感じた場合は、システムに大量のジャンクデータが保存されている可能性があります。これはまさに私のケースであり、定期的にクリーンアップする必要があります。サイズに応じてデータを削除したいので、ホームディレクトリ内の最大のディレクトリから開始することが最初のステップです。
データクリーンアップルーチンに使用するbashコマンドをいくつか示します。
すべてのディレクトリとファイルを適切なサイズで一覧表示します
このコマンドは、現在の作業ディレクトリ内のファイルとディレクトリのみを一覧表示します。-sオプションを削除すると、再帰的な出力が表示されます。-hは人間が読める出力を表します。
$ du -sh *
すべてのディレクトリを一覧表示し、サイズで並べ替え
前のコマンドは、私たちが心配していない多くの不要なファイルをソートおよび印刷しないため、あまり役に立ちません。次のlinuxコマンドは、現在の作業ディレクトリ内のすべてのディレクトリを出力し、関連するサイズ(MB単位)を含めて、最大から最小にソートします。
$ du -m --max-depth 1 | sort -rn
サイズのディレクトリごとにTOP 10を一覧表示する
私たちが最後に見つけた最初の10個の最大のディレクトリをクリーンアップすることによって、データのクリーンアップを終了します。したがって、最初に最大のディレクトリにのみ関心があるかもしれません。それらがどれであるかを見つけるには、前のコマンドを使用して、headを含めます。
$ du -m --max-depth 1 | sort -rn | head -11
すべてのディレクトリを一覧表示し、サイズのbashスクリプトで並べ替え
上記のコマンドを使用して、bashスクリプトを作成し、作業を簡単にすることができます。次のbashスクリプトは2つの引数を受け入れます。最初の引数は検索を開始するディレクトリ名で、2番目の引数はスクリプトが出力するディレクトリの数です。
#!/bin/bash if [ $# != 2 ]; then echo "Incorrect number of arguments !" >&2 echo "USAGE: sortdirbysize [DIRECTORY] " fi du --block-size=1M --max-depth 1 $1 | sort -rn | head -$2
例:
$ ./sort-dir-by-size.sh /home/linux 15