問題
サーバのディスク容量が逼迫してきており、処理が重かったり、失敗する。
効率的にファイルを削除したいので、まずはサイズの大きいファイルを全ディレクトリから検索して降順に表示したい。
方法
コマンドでファイルを抽出する。
環境
OS:FreeBSD 9.1
コマンド
find / -size +10M -exec ls -lhS {} +
結果例
% find / -size +10M -exec ls -lhS {} + find: /aaa/bbb: Permission denied -rw-r--r-- 1 hoge fuga 22M Jul 17 2018 /xxx/yyy.jpg -rw-r--r-- 1 hoge fuga 20M Apr 4 2018 /xxx/zzz.pdf -rw-r--r-- 1 foo bar 10M Apr 4 2018 /ccc.png %
find
findは、指定ディレクトリから条件に合致するファイルを検索するコマンド。
-size
+○○で指定サイズ以上のファイルを検索できる。
+10Mなら10メガバイト以上のファイルを検索できる。
ファイルサイズの単位はギガバイトのG、メガバイトのMなど指定できる。
-exec
findの結果を別のコマンドに渡して実行できる。
findの結果をコマンドの引数にする場合、{}を書く。
末尾が + の場合、findの結果を引数にまとめて渡す。
末尾を \; とした場合、findの結果をコマンドに1つずつ渡して実行する。
ls
lsはファイルやディレクトリを表示するコマンド。
-l
パーミッションや所有者、ファイルサイズ、タイムスタンプ、パスなど、ファイルの詳細を表示できる。
-h
ファイルサイズをKやMやGなど分かりやすい単位に変換して表示してくれる。
-S
表示をファイルサイズの降順にソートしてくれる。