こんにちは、さるまりんです。
前回、ディスクが一杯にになった時、どこで容量をとっているかを探す方法をメモしました。今回はその後にスペースを空けるためにファイルを削除する時に使うコマンドのメモです。
ls
コマンドはファイルの一覧を表示します。
$ ls -lt
total 2996
-rw-r--r-- 1 root root 18215 Jun 24 05:48 access_log
-rw-r--r-- 1 root root 6849 Jun 24 03:21 error_log
-rw-r--r-- 1 root root 40495 Jun 23 03:20 error_log-20190623
-rw-r--r-- 1 root root 1285272 Jun 23 00:41 access_log-20190623
-rw-r--r-- 1 root root 19701 Jun 16 03:33 error_log-20190616
-rw-r--r-- 1 root root 393064 Jun 16 03:17 access_log-20190616
-rw-r--r-- 1 root root 98336 Jun 9 03:48 error_log-20190609
-rw-r--r-- 1 root root 779982 Jun 9 03:42 access_log-20190609
-rw-r--r-- 1 root root 22414 Jun 2 03:31 error_log-20190602
-rw-r--r-- 1 root root 357798 Jun 2 03:05 access_log-20190602
-lt
オプションをつけています。-l
で詳細を表示して、-t
で更新の新しい順に並べています。-l
はlongの意味だそうです。-t
はtimeかな?
これでもわかると言えばわかるのですが、一気にファイルを見つけて削除できたら便利ですよね。
それにはfind
コマンドを使います。
例えば3日前より古いファイルを探すには次のようにします。
find . -mtime +3 -type f
上のディレクトリで実行するとこうなります。
$ find . -mtime +3 -type f
./access_log-20190602
./error_log-20190616
./error_log-20190602
./access_log-20190616
./error_log-20190609
./access_log-20190609
accessログだけに絞るとこうです。
$ find . -mtime +3 -type f -name 'access_log*'
./access_log-20190602
./access_log-20190616
./access_log-20190609
削除
これとrmコマンドを組み合わせて削除します。
find . -mtime +3 -type f | xargs rm -f
find
で見つかった結果をrm
コマンドに渡して削除です。
rm
コマンドの-f
オプションは確認なし、消せなくてもエラーメッセージ表示なしで処理しますので、注意して使わないとヤバいということになります。
移動
いやいや、いきなり消すのは不安という場合はmv
コマンドで移動です。
find . -mtime +3 -type f | xargs mv --target-directory=/tmp
上のコマンドで見つかったファイルを/tmp
以下に移動します。
圧縮
tar
コマンドで圧縮することもできます。
find . -mtime +3 -type f | xargs tar zcvf files.tar.gz
上記で見つかったファイルをfiles.tar.gz
に圧縮します。
コマンドの組み合わせってパズルのようで面白いです。
覚えると便利になりそう。勉強になります。
読んでくださってありがとうございます。
それではまた!