Hitachi

JP1 Version 11 JP1/Advanced Shell 


8.4.13 findコマンド(ディレクトリ内のファイルを検索する)

形式

find[-d][-H][-h][-L] パス名[...][検索式

機能

検索を開始するパスをパス名に指定し,ディレクトリ階層をたどって,ファイルを検索します。検索の条件および検索したファイルの扱いを,検索式に指定できます。

引数

オプション,検索を開始するパス名および検索式を指定します。検索を開始するパス名は,findコマンドの引数のパス名で指定します。

オプションはハイフン(-)と共に1文字のオプション名を指定します。

-d

ディレクトリ内のファイルを階層の深いディレクトリから先に検索します。

-H

引数として指定したパス名がシンボリックリンクだった場合,リンク先が指定されたものとして処理します。リンク先が存在しない場合は,シンボリックリンクが指定されたとして処理します。検索中に遭遇したシンボリックリンクはリンク先を参照しません。-Hオプション,-hオプションおよび-Lオプションは,最後に指定したオプションが有効となります。

-h

シンボリックリンクは,すべてリンク先を参照して処理を継続します。リンク先が存在しない場合は,シンボリックリンクが指定されたとして処理します。-Hオプション,-hオプションおよび-Lオプションは,最後に指定したオプションが有効となります。

-L

シンボリックリンクは,すべてリンク先を参照して処理を継続します。リンク先が存在しない場合は,シンボリックリンクが指定されたとして処理します。-Hオプション,-hオプションおよび-Lオプションは,最後に指定したオプションが有効となります。

パス名

パス名を指定します。

検索式

検索式(expression)は,プライマリおよび演算子を指定します。

  • プライマリ

-amin 時間差

UNIXの場合,ファイルおよびディレクトリの最終アクセス日時と,findが実行を開始した日時の差が,ここで指定された時間差(単位:分)のときは真です。日時の差は,1分未満は切り上げます。

時間差は,符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定した時間差

+を前置した場合:指定値より大きい

-を前置した場合:指定値より小さい

時間差の範囲は21474836470x7fffffff)までで,それ以上を指定しても2147483647となります。

時間差に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

時間差を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

Windowsの場合,指定するとエラーとなります。

-anewer パス名

UNIXの場合,ファイルおよびディレクトリの最終アクセス日時がパス名より新しい場合は真です。

Windowsの場合,指定するとエラーとなります。

-atime 時間差

UNIXの場合,ファイルおよびディレクトリの最終アクセス日時と,findが実行を開始した日時の差がここで指定された時間差(単位:日)のときは真です。日時の差は,1日未満は切り上げます。

時間差は符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定した時間差

+を前置した場合:指定値より大きい

-を前置した場合:指定値より小さい

時間差の範囲は21474836470x7fffffff)までで,それ以上を指定しても2147483647となります。

時間差に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

時間差を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

Windowsの場合,指定するとエラーとなります。

-cmin 時間差

UNIXの場合,ファイル情報の最終変更日時(書き込みが発生した,所有者,グループ,リンク数やモードなどが変更された日時)と,findが実行を開始した日時の差が,ここで指定された時間差(単位:分)のときは真です。日時の差は,1分未満は切り上げます。

時間差は符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定した時間差

+を前置した場合:指定値より大きい

-を前置した場合:指定値より小さい

時間差の範囲は21474836470x7fffffff)までで,それ以上を指定しても2147483647となります。

時間差に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

時間差を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

Windowsの場合,指定するとエラーとなります。

-cnewer パス名

UNIXの場合,ファイル情報の最終変更日時(書き込みが発生した,所有者,グループ,リンク数およびモードなどが最後に変更された日時)が,パス名で指定されたファイルより新しい場合は真です。

Windowsの場合,指定するとエラーとなります。

-ctime 時間差

UNIXの場合,ファイル情報の最終変更日時(書き込みが発生した,所有者,グループ,リンク数およびモードなどが最後に変更された日時)と,findが実行を開始した日時の差がここで指定された時間差(単位:日)のときは真です。日時の差は,1日未満は切り上げます。

時間差は符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定した時間差

+を前置した場合:指定値より大きい

-を前置した場合:指定値より小さい

時間差の範囲は21474836470x7fffffff)までで,それ以上を指定しても2147483647となります。

時間差に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

時間差を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

Windowsの場合,指定するとエラーとなります。

-depth

階層の深いディレクトリから検索します。ディレクトリ内のファイルを先に処理します。常に真です。

-empty

ファイルやディレクトリが空の場合は真です。

-exec コマンドライン ;

検索したファイルおよびディレクトリに対して処理をするコマンドラインを指定します。

findコマンドを実行するシェルによっては,*;(セミコロン)などの文字が展開されるため,"(ダブルクォーテーション)または'(シングルクォーテーション)で囲むか,エスケープ文字(\)を使用する必要があります。

コマンドライン;(セミコロン)で区切ります。

コマンドラインで指定したプログラムは,findが起動されたディレクトリをカレントディレクトリとして起動します。

コマンドライン{ }を指定すると,検索したファイルまたはディレクトリのパス名に置き換わります。パス名は,検索を開始するパスを絶対パスで指定した場合は絶対パスに,検索を開始するパスを相対パスで指定した場合は相対パスになります。

コマンドラインで指定したプログラムが終了コード0で終了した場合,真です。

-follow

常に真です。

シンボリックリンクは,すべてリンク先を参照して処理を継続します。リンク先が存在しない場合は,シンボリックリンクが指定されたとして処理します。

-group グループ名

Windowsの場合,常に偽となります。

UNIXの場合,ファイルの属するグループがグループ名の場合は真です。グループ名が数字で,そのグループ名が存在しないときは,グループIDと解釈します。

-iname パターン

-nameオプションの説明を参照してください。ただし,英大文字と英小文字を区別しません。

-inum 番号

Windowsの場合,常に偽となります。

UNIXの場合,ファイルのinode番号が指定した番号のときは真です。

番号は符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定した番号

+を前置した場合:指定値より大きい番号

-を前置した場合:指定値より小さい番号

番号の範囲は92233720368547758070x7fffffffffffffff)までで,それ以上を指定しても9223372036854775807となります。

番号に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

番号を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

-links リンク数

ファイルのリンク数が指定したリンク数のときは真です。

リンク数は符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定したリンク数

+を前置した場合:指定値より大きい数

-を前置した場合:指定値より小さい数

リンク数の範囲は21474836470x7fffffff)までで,それ以上を指定しても2147483647となります。

リンク数に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

リンク数を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

-ls

常に真です。

Windowsの場合は,ファイルパーミッション,ハードリンク数,所有者名,サイズ(バイト単位),最終修正日時,およびパス名を標準出力に出力します。ファイルがシンボリックリンクの場合は,リンク先のパス名が「->」のあとに表示されます。

UNIXの場合,inode番号,サイズ(512バイト単位),ファイルパーミッション,ハードリンク数,所有者名,グループ,サイズ(バイト単位),最終修正日時およびパス名を標準出力に出力します。ファイルがスペシャルファイルの場合は,サイズ(バイト単位)の代わりにメジャー番号およびマイナー番号を表示します。ファイルがシンボリックリンクの場合は,リンク先のパス名が「->」のあとに表示されます。

-maxdepth 深さ

現在検索しているディレクトリの深さが,指定した深さより小さいまたは同じ場合には真です。最初に指定したディレクトリの深さは1です。

深さの指定範囲は,0から32767までです。0を指定すると,検索対象ディレクトリだけ(ディレクトリに格納されているファイルは対象外)となります。

・指定できる値より大きい値を指定するとエラーとなります(find: 指定値: maxdepth value too large)。

深さに数値以外を指定した場合,エラーメッセージ(find: 指定した文字列: プライマリ: value invalid)を出力します。

深さを指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

-mindepth 深さ

現在検索しているディレクトリの深さが指定した深さ以上の場合には真です。

深さの指定範囲は,0から32767までです。

・指定できる値より大きい値を指定してもエラーになりません。

深さに数値以外を指定した場合,0が指定されたことになります。

深さを指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

-mmin 時間差

ファイルおよびディレクトリの最終修正日時と,findが実行を開始した日時の差が時間差で指定された分のときは真です。日時の差は,1分未満は切り上げます。時間差は符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定した時間差

+を前置した場合:指定値より大きい

-を前置した場合:指定値より小さい

時間差の範囲は21474836470x7fffffff)までで,それ以上を指定しても2147483647となります。

時間差に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

時間差を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

-mtime 時間差

ファイルおよびディレクトリの最終修正日時と,findが実行を開始した日時の差が時間差で指定された日のときは真です。日時の差は,1日未満は切り上げます。時間差は符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定した時間差

+を前置した場合:指定値より大きい

-を前置した場合:指定値より小さい

時間差の範囲は21474836470x7fffffff)までで,それ以上を指定しても2147483647となります。

時間差に数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

時間差を指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

-mount

常に真です。UNIXの場合,検索を開始したディレクトリのデバイス番号と異なるディレクトリは,検索しないようにします。

-name パターン

検索するファイル名またはディレクトリ名をパターンで指定します。検索したファイル名またはディレクトリ名がパターンに一致する場合は真です。

パターンは,文字とワイルドカードの組み合わせで指定します。ワイルドカードで使用する文字を指定するために,エスケープ文字(\)を使用できます。また,ワイルドカードで使用する文字以外もエスケープ文字(\)を使用できます。この場合,そのまま\が無視されたように見えます。

ワイルドカードとして使用できる文字を次の表に示します。

ワイルドカード

意味

?

任意の1文字に合致します。

*

0文字以上の文字列に合致します。

[…]

[ ]に囲まれた文字列のどれか1文字に合致します。[ ]に囲まれた文字列の先頭に!または^を付けた場合,[ ]に囲まれていない文字に合致します。-(ハイフン)で区切るとハイフンで区切られた,間にある任意の文字(その2文字も含む)に合致します。

ワイルドカード[ ]の記述例を次の表に示します。

記述例

意味

[!abc]

abcの3つを除く文字と合致します。

[0-9]

0から9までのどれかに合致します。

[a-z]

英小文字に合致します。

[A-Z]

英大文字に合致します。

[0-9a-zA-Z]

英数字に合致します。

-newer パス名

現在のファイルおよびディレクトリが,パス名の最終修正日時より新しい場合は真です。

-nogroup

Windowsの場合,常に偽となります。

UNIXの場合,現在のファイルが,存在しないグループに属している場合に真です。

-nouser

Windowsの場合,常に偽となります。

UNIXの場合,現在のファイルの所有者が存在していないユーザーの場合に真です。

-ok コマンドライン ;

検索したファイルおよびディレクトリに対して処理をするコマンドラインを指定します。

findコマンドを実行するシェルによっては,*;(セミコロン)などの文字が展開されるため,"(ダブルクォーテーション)または'(シングルクォーテーション)で囲むか,エスケープ文字(\)を使用する必要があります。

コマンドライン;(セミコロン)で区切ります。

コマンドラインで指定したプログラムは,findが起動されたディレクトリをカレントディレクトリとして起動します。起動する前に,ユーザーに応答を求めます。標準入力からyが入力されない場合,コマンドラインを実行しないで,偽を返します。

コマンドライン{ }を指定すると,検索したファイルまたはディレクトリのパス名に置き換わります。パス名は,検索を開始するパス名を絶対パスで指定した場合は絶対パスに,検索を開始するパスを相対パスで指定した場合は相対パスになります。

コマンドラインで指定したプログラムが終了コード0で終了した場合,真です。

-path パターン

検索するファイル名またはディレクトリ名のパス名をパターンで指定します。検索したファイルまたはディレクトリのパス名がパターンに一致する場合は真です。

パターンには,指定した文字とワイルドカードの組み合わせで指定します。ワイルドカードで使用する文字そのものを指定するために,エスケープ文字(\)を使用できます。ワイルドカードで使用する文字以外に使用した場合,\が無視されたように見えます。

パターンの指定の詳細は,-name パターンの説明を参照してください。

-perm [-]パーミッション

UNIXの場合,パーミッションを8進数の数値またはシンボルで指定します。Windowsでこの引数を指定するとエラー(find: -perm: unknown option)になります。

パーミッションをハイフン(-)に続いて指定した場合,ファイルまたはディレクトリのモードのうちパーミッションで指定された値が設定されていると真になります。ハイフンが指定されない場合は,パーミッションとファイルのモードが完全に一致したときに真になります。

パーミッションを数値で指定した場合,8進数以外または8進数の07777(10進数の4095)より大きな値を指定するとエラーとなります。

パーミッションをシンボルで指定した場合,何も指定されていない状態(数値表現での0)に対して設定,追加および削除をします。1つまたは複数のシンボルで指定された結果が検索に使用されます。

シンボルは3つの部分から構成されます。次に示すシンボルを1つまたは複数指定します。複数指定する場合は,コンマ(,)でシンボル間を区切ります。

シンボル内の順序

指定できる値

1つ目

アクセス権を設定する項目を指定します。複数同時に指定できます。

指定できる項目を次に示します。省略するとすべてのユーザーが仮定されます。

u:所有者

g:グループ

o:その他

a:全ユーザー

2つ目

モードに対する操作を指定します。1つ目のシンボルで指定した項目に対して次の処理をします。

=:アクセス権の設定(上書き)

+:アクセス権の追加

-:アクセス権の削除

設定,追加および削除する値は,3つ目のシンボルで指定します。

3つ目のシンボルに続いて2つ目および3つ目のシンボルを記述できます。3つ目のシンボルは省略できます。

3つ目

設定するアクセス権を指定します。複数同時に指定できます。指定できる値を次に示します。

r:読み取り

w:書き込み

x:実行

s:実行時にユーザーまたはグループIDを設定する

t:スティッキービット

u:モードに現在設定されている所有者のアクセス権

g:モードに現在設定されているグループのアクセス権

o:モードに現在設定されているその他のアクセス権

省略するとアクセス権を設定する項目を消去します。消去した値を2つ目のシンボルに従って設定,追加および削除します。追加および削除だけでは値は変化しません。

stの指定は,1つ目でoだけを指定した場合には無視されます。

シンボルの指定例を次の表に示します。

-permの指定値

同等の数値指定

説明

u=x,g=w

120

uに対してxを設定し,gに対してwを設定しています。

u=x,g=u

110

uに対してxを設定し,gに対してuと同じ値を設定しています。

u=x,=u

111

uに対してxを設定し,そのあとa(省略値)にuと同じ値を設定しています。

u=x,u=w

200

uに対してxを設定し,その後uに対してwを設定(上書き)しています。

u=x,u+w

300

uに対してxを設定し,その後uに対してwを追加しています。

ug=x

110

ugに対してxを設定しています。

u=rw

600

uに対してrおよびwを設定しています。

u=r+x

500

uに対してrを設定し,xを追加しています。

u=r=w

200

uに対してrを設定し,さらにwを設定(上書き)しています。

=x,u=

011

a(省略値)にxを設定し,uの設定を消去しています。

=

000

a(省略値)を消去しています。

-print

検索したファイルまたはディレクトリのパス名を標準出力に出力して改行します。常に真です。

-print0

検索したファイルまたはディレクトリのパス名とNULL('\0')を標準出力に出力します。常に真です。

-prune

検索中に遭遇したディレクトリはたどらないようにします。常に真です。-dオプションが指定されている場合は無効となります。

-size サイズ[c]

ファイルのサイズが,指定したサイズブロック(512バイト単位に切り上げ)の場合は真です。サイズのあとにcを指定するとバイト単位で評価します。

サイズは符号を指定しないか,+または-の符号を付けた数値を指定することで,次のように扱われます。

・符号を指定しない場合:指定したサイズ

+を前置した場合:指定値より大きいサイズ

-を前置した場合:指定値より小さいサイズ

サイズの範囲は92233720368547758070x7fffffffffffffff)までで,それ以上を指定しても9223372036854775807となります。

サイズに数値以外を指定した場合,エラーメッセージ(find: プライマリ: 指定した文字列: illegal numeric value)を出力します。

サイズを指定しなかった場合,エラーメッセージ(find: プライマリ: requires additional arguments)を出力します。

-type タイプ

現在のファイルのタイプが指定したタイプと等しい場合は真です。タイプを次に示します。次のタイプ以外を指定した場合は,エラーメッセージ(find: -type: 指定した値: unknown type)が出力されます。

b:ブロック型スペシャルファイル(Windowsでは指定できません)

c:キャラクタ型スペシャルファイル(Windowsでは指定できません)

d:ディレクトリ

f:通常ファイル

l:シンボリックリンク

p:FIFO(Windowsでは指定できません)

s:ソケット(Windowsでは指定できません)

-user ユーザー名

Windowsの場合,ファイルの所有者がユーザー名のときは真です。

UNIXの場合,ファイルの所有者がユーザー名のときは真です。ユーザー名に数値を指定し,その所有者名が存在しないときはユーザーIDとして評価します。

-xdev

常に真です。UNIXの場合,検索を開始したディレクトリのデバイス番号と異なるディレクトリは,検索しないようにします。

  • 演算子

    プライマリは次の演算子と共に使用できます。優先度の高い順に示します。

( 検索式 )

括弧演算子内の検索式が条件を満たす場合,真です。

! 検索式

!演算子に続く検索式が条件を満たす場合,偽です。

検索式 -and 検索式|検索式 -a 検索式|検索式 検索式

検索式を-and演算子もしくは-a演算子で接続する,または検索式を2つ並べると論理積となります。2つの検索式が真の場合,真です。最初の検索式が偽の場合,2つ目の検索式は評価されません。

検索式 -or 検索式|検索式 -o 検索式

検索式を-or演算子または-o演算子で接続すると論理和になります。どちらかの検索式が真の場合,真です。

終了コード

終了コード

意味

0

正常終了

1以上

エラー終了

注意事項

使用例