linux note
     linuxのコマンドがカテゴリ別の一覧で確認できます。



 

Linux Note(トップページ) > ファイル操作 > 高度なファイル操作 > find コマンド







[Note] find コマンド

find コマンドは、言わずもがな「ファイル」を検索するコマンドです。指定したディレクトリ以下から、「ファイル名」による検索のみならず、「ファイルサイズ」は言うにおよばす、「更新日」や「アクセス権」により検索することができます。また、検索結果のファイル群に対して、別のコマンドにより操作を行うことも可能であるという、非常に優れた機能を有します。

最も一般的な使い方は

 $ find /home -name “*.csv”

などです。findコマンドのすぐ後ろに検索対象のディレクトリ名がきて、その後にオプション「-name」をつけて対象となる「ファイル名」が来ます。この「-name」を付けるあたりが、Windows的感覚(と言ってよいかはわかりませんが)とは違う所で、「ファイル名」による検索を前提としていないのであくまで、オプションで「ファイル名」で検索することを明示的に示す必要があります。

典型的なオプションを以下に一覧で示しておきます。


オプション
機能の説明
-name ファイル名
ファイル名による検索
-atime [+/-] 日数
最終アクセス日時による検索
-mtime [+/-] 日数
最終更新日時による検索
-ctime [+/-] 日数
ステータス更新日時による検索
-perm アクセス権
アクセス権による検索
-size サイズ
ファイルサイズによる検索
-type ファイルの種類
ファイルの種類による検索 f : ファイル d : ディレクトリ
-user ユーザー名
ファイルの所有者による検索
-print
マッチしたファイルを表示する
-exec コマンド {} \;
結果取得後に別のコマンドを実行する({}は取得したファイル名を引数として渡す際に必要)

下記にいくつか典型的な例を示しておきます。
以下は、ディレクトリ全体から、拡張子が「.txt」であるファイルを検索して、rmコマンドによりそれを削除する場合です。

 $ find ./ -name “*.txt” -exec rm {} / ;

以下は、アクセス権限による検索です

 $ find ./ -perm 644

以下は、サイズが1000kを超えるファイルを検索しています。

 # find ./ -size +1000k

以下は、/etc ディレクトリ以下のファイルで、過去1日以内にステータスが変更になったファイルを検索しています。

 $ find /etc -type f -ctime -1

「-atime」「-mtime」「-ctime」は、‘+’や‘-’を付加することで、日数*24時間より古いファイル(+)、新しいファイル(-)を検索することができます

また、「atime」「mtime」で扱っている時刻は「touch」コマンドなどで事後的に修正することが可能です。
「ctime」は、現在時刻にしか変更できないので、findコマンド等のチェックで使用する場合は、「ctime」の方が比較的信用できるということになります。




[ カテゴリ一覧 ]

 |  エディタ  |  システム管理  |  テキスト操作  |  ファイルシステム  |  ファイル操作  | 
 |  ファイル管理  |  ユーザーやグループの管理  |