1. tomozo6

    No comment

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