findコマンドでよく使う構文をメモ代わりにどんどん書いていきます。
再帰的なgrep
$ find ./ -name '*' | xargs grep hogehoge
拡張子がphpのものだけならばfindの時点で絞ってあげます。
$ find ./ -name '*.php' | xargs grep hogehoge
よく使うのに忘れがちな構文です。
「1年前~現在」までのファイルの合計容量(GB)
過去のファイルを消してディスクの容量削減をする際に、削除後どのぐらいの容量になるかを試算するために使います。
以下のパターンだと、「過去1年間分のファイルだけ残す場合、どれだけの容量まで減るか?」という試算になります。
$ find ./ -mtime -365 -type f -printf "%s\n" |awk '{sum += $1; printf("\r%d",sum/1024/1024/1024) }; END{print""};'
1年前以前のファイルを削除
まずは該当ファイルを表示して確認
$ find ./ -mtime +366 -type f
さらにどれぐらいの容量か確認
$ find ./ -mtime +366 -type f -printf "%s\n" |awk '{sum += $1; printf("\r%d",sum/1024/1024/1024) }; END{print""};'
そしてrmコマンドで本当に削除
$ find ./ -mtime +366 -type f -exec rm {} \;
更新日が最近のファイルを検索する
カレントディレクトリ内で更新日が最近の5日以内のファイルを見つける。-lsで詳細情報を付加。
$ find ./ -mtime -5 -ls
更新日が最近の5日以上前のファイルを見つける(こう書くと古い方を見てしまう)
$ find ./ -mtime +5
更新日がちょうど5日前のファイルを見つける
$ find ./ -mtime 5
ファイル名のみ表示
$ find ./ -type f -printf "%f\n"
UID,GID を一括置換
$ find / -uid ${OldUID} -print0 | xargs -0 chown {対象ユーザ名}
$ find / -gid ${OldGID} -print0 | xargs -0 chgrp {対象グループ名}