Edited at

findチートシート

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 {対象グループ名}