Help us understand the problem. What is going on with this article?

findチートシート

More than 1 year has passed since last update.

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 {対象グループ名}
tomozo6
元Cobolerで金融系案件のPM。 インフラの技術に興味があって転職。 オンプレのホスティングサービスの構築,保守,運用を担当。 現在、時代の流れによりオンプレ環境を全てAWSへ移設する作業中。 全体改善,効率化,DevOpsが最近の興味関心。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away