Linuxコマンドに「find」(ファインド)があります。このfindコマンドの使い方を解説します。
findコマンドとは
findコマンドは、一言で説明すると、指定したディレクトリの配下(最後の階層まで)に指定したファイルやディレクトリが存在するか検索してくれるコマンドです。
findコマンドの基本的な使い方
findコマンドの基本的な使い方を解説します。
検索対象ファイル名やディレクトリ名を指定して検索する
検索対象のファイル名やディレクトリ名が明確な場合、下記の通りfindコマンドを入力します。
> find 検索範囲とするディレクトリ名 ファイル名またはディレクトリ名
例えば、「/tmp」ディレクトリの中を検索範囲として、「text.txt」というファイル名を検索する時は下記の通りfindコマンドを入力します。
> find /tmp text.txt
なお、コマンド入力しているコンピュータの中全体を検索範囲としたいなら、LinuxOSの先頭ディレクトリである「/」(ルート)を検索範囲とするディレクトリ名に指定します。
> find / text.txt
スポンサーリンク
検索対象ファイル名やディレクトリ名が曖昧で名称の一部しか分からない状態でワイルドカード検索する
例えば、ファイル名の一部に「test」と付いたファイル名であることは分かるが、「test」の前後文字列が不明な場合には、「test」という文字列の前後に「ワイルドカード」(何かしらの文字列)を付与して、下記の通りfindコマンドを入力します。
> find 検索範囲とするディレクトリ名 -name \*text\*
この時の注意点として、ワイルドカードは「*」(アスタリスク)ですが、ワイルドカードである「*」の前に「\」(バックスラッシュ)を入力しないと、コマンド入力後にエラーとなるため、「\」はワイルドカードの前に必ず入れます。
ファイル名の前が不明な場合と後ろが不明な場合でワイルドカードの付与方法を使い分ける
例えば、「ファイル名の最後がtextという文字列」と分かっているなら、ワイルドカードは「\*text」というように「test」の前にだけワイルドカードである「*」を付与します。
> find 検索範囲とするディレクトリ名 -name \*text
逆に、「ファイル名の先頭がtextという文字列」と分かっているなら、ワイルドカードは「text\*」というように「test」の後ろにだけワイルドカードである「*」を付与します。
> find 検索範囲とするディレクトリ名 -name text\*
任意の日数にアクセスされたファイルやディレクトリを検索する
例えば、今日アクセスされたファイルやディレクトリに絞って検索したい場合は「-atime」を付与して検索します。
> find 検索範囲とするディレクトリ名 -aname 日数
今日や昨日等、指定した日にアクセスされたファイルやディレクトリを検索範囲とする
本日から過去の日数を指定する場合は、本日は0、昨日は1と言う様に日付の日数を遡って加算した上で検索範囲を指定します。
例えば、本日アクセスした/tmp配下のファイルやディレクトリを検索範囲とする場合は下記の通りにコマンドを入力します。
> find /tmp -aname 0
任意の日数に更新されたファイルやディレクトリを検索する
例えば、今日更新されたファイルやディレクトリに絞って検索したい場合は「-mtime」を付与して検索します。
> find 検索範囲とするディレクトリ名 -mname 日数
指定した日数より前に更新されたファイルやディレクトリを検索範囲とする
例えば、本日から3日より前にアクセスされたファイルやディレクトリを検索範囲とする場合は、日数を指定した数字の前に「+」(プラス)を付与します。
下記は、3日より前にアクセスした/tmp配下のファイルやディレクトリを検索範囲とする場合は下記の通りにコマンドを入力します。
> find /tmp -mtime +3
指定した日数以内に更新されたファイルやディレクトリを検索範囲とする
例えば、本日から3日以内に更新されたファイルやディレクトリを検索範囲とする場合は、日数を指定した数字の前に「-」(ハイフン)を付与します。
下記は、3日以内に更新された/tmp配下のファイルやディレクトリを検索範囲とする場合は下記の通りにコマンドを入力します。
> find /tmp -mtime -3
任意の分数前にアクセスされたファイルやディレクトリを検索する
例えば、60分前にアクセスされたファイルやディレクトリに絞って検索したい場合は「-amin」を付与して検索します。
> find /tmp -amin 分数
30分前等、指定した分数前にアクセスされたファイルやディレクトリを検索範囲とする
30分前の分数を指定する場合は30と言う様に日付の分数を指定した上で検索範囲を指定します。
例えば、30分前にアクセスした/tmp配下のファイルやディレクトリを検索範囲とする場合は下記の通りにコマンドを入力します。
> find /tmp -amin 30
30分以内等、指定した分数以内を範囲に更新されたファイルやディレクトリを検索範囲とする
例えば、今から30分以内に更新されたファイルやディレクトリを検索範囲とする場合は、分数を指定した数字の前に「-」(ハイフン)を付与します。
> find /tmp -amin -30
上記コマンドで、「0分から30分以内にアクセス」したファイルやディレクトリを範囲範囲とします。
任意の分数以内に更新されたファイルやディレクトリを検索する
例えば、60分以内に更新されたファイルやディレクトリに絞って検索したい場合は「-mmin」を付与して検索します。
> find /tmp -mmin 分数
30分前までに等、指定した分数までの時間を範囲に更新されたファイルやディレクトリを検索範囲とする
例えば、今から30分前までに更新されたファイルやディレクトリを検索範囲とする場合は、分数を指定した数字の前に「+」(ハイフン)を付与します。
> find /tmp -mmin +30
上記コマンドで、「0分から30分以内に更新」したファイルやディレクトリを範囲範囲とします。
指定したファイルの更新日時と比べてアクセスした時間がそれ以降のファイルを検索する
指定したファイルの更新日時以降にアクセスされたファイルを検索します。検索範囲のディレクトリを/tmpとした場合のコマンドは下記の通りです。
> find /tmp -anewer 更新日時の対象となる指定ファイル名
例えば、「更新日時の対象となる指定ファイル名」を「text.dat」として/tmp配下を検索範囲とする場合、下記の通りとなります。
> find /tmp -anewer text.dat
上記の場合、カレントディレクトリにtext.datがあるケースのコマンドであるため、カレントディレクトリにtext.datが無い場合は、絶対パスで下記の通り指定します。下記の事例は、text.datファイルが/var配下に存在する場合の絶対パスによる入力方法です。
> find /tmp -anewer /var/text.dat