[ Solaris ] 条件を指定してファイルを検索する ( find コマンド )

Pocket

ここでは、Unix でファイルを検索するコマンド find コマンドの簡単な使い方を掲載しています。Linux などの他の Unix 系 OS でも使い方は同じです。ただ、未検証ですので完全に同じ使い方ができるかはわかりません。

スポンサーリンク

ファイル名で検索する(完全一致)

serach.txt というファイル名のファイルをカレントディレクトリ (サブディレクトリを含む) 配下から検索し、結果を標準出力に出力しています。

find . -name serach.txt -print

# /usr ディレクトリ配下で探す場合は以下の通り
find /usr -name serach.txt -print
ファイル名で検索する(曖昧検索)

曖昧検索を行う場合は ” *.log ” のように指定します。拡張子が .log の ファイルを /usr ディレクトリ配下から検索しています。

find /usr -name "*.log" -print
OR 検索

検索条件を複数指定して、OR 条件でファイルを検索できます。test.txt または ” *.log ” というファイルを検索しています。カッコはエスケープする必要があります。

find . \( -name test.txt -o -name '*.log' \)
ファイルの更新日時をファイルを検索する

ファイルの更新日時を検索条件にするには -mtime をオプションで指定します。前述の OR 検索結果からさらに 12日間更新されていないファイルを検索しているサンプルになります。また、n 日以内に修正されたファイルや、ピンポイントで n 日前に修正されたファイルの検索などができます。

# 12日間更新されていないファイルを検索する
find . \( -name test.txt -o -name '*.log' \) -mtime +12

# 12日以内に更新されたファイルを検索する
find . \( -name test.txt -o -name '*.log' \) -mtime -12

# 12日前にピンポイントで更新されたファイルを検索する
find . \( -name test.txt -o -name '*.log' \) -mtime 12
ファイルサイズを検索条件にする

ファイルサイズが Nバイトや、Nバイトより大きい、または Nバイトより小さいなどのようにファイルサイズを検索条件にできます。大きなサイズのファイルを検索するためによく使用されます。c ( バイト ) 、k ( キロバイト ) 、M ( メガバイト ) のようにサイズ指定できます。

# 800バイトより大きいファイルを検索する
find . -name '*' -size +800c

# 800バイトのファイルを検索する
find . -name '*' -size 800c

# 800バイトより小さいファイルを検索する
find . -name '*' -size -800c
検索結果のファイルに対してコマンドを発行する

検索結果で取得したファイルに対してコマンドを発行するには -exec オプションを指定します。次の例では、10日間更新されていないファイルに対して rm コマンドを発行し、削除しています。

find . -name "*.log" -mtime +10 -exec rm {} \;

find コマンドは開発時も運用時もよく使用される便利なコマンドです

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *