コマンド | 説明 |
---|---|
find | find ユーティリティは、指定ディレクトリツリーを再帰的に下って、ツリー上の各ファイルについてオプションで指定された処理を実行します。 |
ファイルのみ検索
% find /path/to/hoge -type f
ファイルのみ検索(再帰スキャンしない(指定ディレクトリのみ検索))
% find /path/to/hoge -maxdepth 1 -type f
ファイルのみ検索(カレントディレクトリ配下を検索)
% find . -type f
ファイル名が「hoge.txt」のファイルを検索
% find . -type f -name 'hoge.txt'
ファイル名が「hoge.txt」でないファイルを検索
% find . -type f ! -name 'hoge.txt'
ディレクトリのみ検索
% find /path/to/hoge -type d
シンボリックリンクのみ検索
% find /path/to/hoge -type l
7日前にアクセスされたファイル
% find /path/to/hoge -type f -atime 7
8日以前にアクセスされたファイル
% find /path/to/hoge -type f -atime +7
6日以内にアクセスされたファイル
% find /path/to/hoge -type f -atime -7
10分前にアクセスされたファイル
% find /path/to/hoge -type f -amin 10
11分以前にアクセスされたファイル
% find /path/to/hoge -type f -amin +10
9分以内にアクセスされたファイル
% find /path/to/hoge -type f -amin -10
7日前にファイルステータスが変更されたファイル
% find /path/to/hoge -type f -ctime 7
8日以前にファイルステータスが変更されたファイル
% find /path/to/hoge -type f -ctime +7
6日以内にファイルステータスが変更されたファイル
% find /path/to/hoge -type f -ctime -7
10分前にファイルステータスが変更されたファイル
% find /path/to/hoge -type f -cmin 10
11分以前にファイルステータスが変更されたファイル
% find /path/to/hoge -type f -cmin +10
9分以内にファイルステータスが変更されたファイル
% find /path/to/hoge -type f -cmin -10
7日前に修正されたファイル
% find /path/to/hoge -type f -mtime 7
8日以前に修正されたファイル
% find /path/to/hoge -type f -mtime +7
6日以内に修正されたファイル
% find /path/to/hoge -type f -mtime -7
10分前に修正されたファイル
% find /path/to/hoge -type f -mmin 10
11分以前に修正されたファイル
% find /path/to/hoge -type f -mmin +10
9分以内に修正されたファイル
% find /path/to/hoge -type f -mmin -10
ファイルサイズが 500 バイトのファイルを検索
% find /path/to/hoge -type f size 500c
ファイルサイズが 500 キロバイト以上のファイルを検索
% find /path/to/hoge -type f size +500k
ファイルサイズが 5 メガバイト以下のファイルを検索
% find /path/to/hoge -type f -size -5M
「グループ」に「書き込み権限がない」ファイル
% find /path/to/hoge -type f ! -perm -g+w
「その他のユーザー」に「読み込み権限がない」ファイル
% find /path/to/hoge -type f ! -perm -o+r
「8進数」で「777」のファイル
% find /path/to/hoge -type f -perm 777
ファイル名が「hoge.txt」かつ、ファイルサイズが「5000バイト以上」のファイルを検索
% find . -name 'hoge.txt' -and -size +5000c
ファイル名が「hoge.txt」または「fuga.txt」のファイルを検索
% find . -name 'hoge.txt' -or -name 'fuga.txt'
カレントディレクトリ配下のすべてのディレクトリをホームディレクトリ配下の「bakディレクトリ」にコピーする
% find . -type d -exec cp {} ~/bak \;
12分以前にアクセスされたファイルを削除する
% find /path/to/hoge -type f -amin +11 -exec rm {} \;
※. PHPセッションの削除に便利です
でも、これをcronで実行している場合に、削除対象が1つもなかった時エラーメールが飛ぶのが難点(メールは設定によります)
なお、回避策には xargs を使います
正規表現検索
% find . -regex <正規表現>
大文字小文字を区別しない正規表現検索
% find . -iregex <正規表現>
※. 検索対象にパスが含まれることに注意。
例えば「数字の連続.txt」のファイルを検索するのに「[0-9]+\.txt」という正規表現を入れても検索できない。
正しくは「.*[0-9]+\.txt」と入れる。なぜなら「001.txt」というファイルはパスを含むと「./001.txt」になるからである(カレントから検索した場合)
[誤] % find . -regex [0-9]+\.txt [正] % find . -regex .*[0-9]+\.txt