du コマンドの高度な使い方
この最後のステップでは、du
コマンドを使ってディレクトリをサイズでソートしたり、特定のファイルを除外したり、大きなファイルに焦点を当てたりするいくつかの高度なテクニックを学びます。
ディレクトリをサイズでソートする
よくあるタスクの 1 つは、最も大きなディレクトリやファイルを見つけることです。これを実現するには、du
と sort
を組み合わせることができます。
du -h ~/project/data | sort -h
sort
の -h
オプションは、人間が読みやすい形式のサイズを正しく理解してソートするようにします。出力は小さい順にソートされます。
大きい順にソートするには、sort
に -r
(逆順)オプションを追加します。
du -h ~/project/data | sort -hr
出力例:
3.9M /home/labex/project/data
2.0M /home/labex/project/data/backups
804K /home/labex/project/data/images
8.0K /home/labex/project/data/docs
4.0K /home/labex/project/data/docs/doc2.txt
4.0K /home/labex/project/data/docs/doc1.txt
特定のファイルタイプを検索する
find
コマンドを du
と組み合わせて、特定のファイルタイプのサイズを計算することができます。
## Find all jpg files and check their sizes
find ~/project/data -name "*.jpg" -exec du -h {} \;
このコマンドは、~/project/data
ディレクトリ内の .jpg
拡張子のすべてのファイルを検索し、それぞれに対して du -h
を実行します。
ディレクトリを除外する
時には、ディスク使用量の計算から特定のディレクトリを除外したいことがあります。--exclude
オプションを使用することができます。
du -h --exclude="backups" ~/project/data
これにより、~/project/data
内のすべてのデータのディスク使用量が計算されますが、backups
ディレクトリは除外されます。
ディスクの総使用量を取得する
ディレクトリとそのすべてのサブディレクトリの総使用量(要約)のみを取得するには、次のコマンドを使用します。
du -sh ~/project/data
出力例:
3.9M /home/labex/project/data
これは、ディレクトリツリーの総サイズにのみ関心があり、内訳は必要ない場合に特に有用です。
ファイルの更新日時によるディスク使用量の確認
これを実証するために、異なるタイムスタンプのいくつかのファイルを作成しましょう。
## Create a directory for this example
mkdir -p ~/project/data/timeline
cd ~/project/data/timeline
## Create files with different timestamps
echo "Old file" > old_file.txt
echo "Recent file" > recent_file.txt
touch -d "1 month ago" old_file.txt
ここで、find
と du
を組み合わせて、特定の期間内に変更されたファイルのディスク使用量を確認することができます。
## Find files modified in the last 7 days and check their sizes
find ~/project/data -type f -mtime -7 -exec du -h {} \;
これにより、過去 7 日間に変更されたすべてのファイルのサイズが表示されます。
これらの高度なテクニックは、ディスクスペースがどこで使用されているかを特定し、ストレージを解放する機会を見つけることで、Linux システムのディスクスペースを効果的に管理するのに役立ちます。