特定の条件に合致するファイルを探して操作する (find)

対象プラットフォーム: FreeBSD 7.x / FreeBSD 6.x

はじめに

深いディレクトリ階層の中から特定のファイルを探したり、ワイルドカードが使えないコマンドでワイルドカードのニーズを満たす方法として「find」が提供されています。

このページでは、この「find」の使い方について説明します。

条件に合致するファイルを探す

FreeBSDとLinuxでは、各種設定ファイルの保存場所が異なるため、片方に慣れた人がもう片方の環境で設定を行う場合に苦労することが多いのではないでしょうか?

ファイル名が分かっているが、そのファイルがどのディレクトリに配置されているか分からない場合は、findを以下のように使うことにより、指定のファイルの配置場所を見つけることが出来ます。

「find」の利用方法(「httpd.conf」ファイルを探す)
$ find . -type f -name "httpd.conf" -print

上記の例では、カレントディレクトリの配下の階層から「httpd.conf」というファイルを探し、そのファイルのフルパスを表示します。

条件に合致するファイルに対し特定の処理を行う

次に、ワイルドカードに対応していないコマンドを、擬似的にワイルドカードがあるように使う方法について説明します。

FreeBSDのchmodは、「-R」パラメータをつけると「*.cgi」のような複雑なワイルドカード指定を展開してくれません。
たとえば、「chmod -R 555 *.cgi」のように指定しても、パターンマッチに失敗してしまいます。

findを下記のように利用することにより、特定のディレクトリ配下の拡張子「.cgi」のファイルの権限を変えるニーズを満たすことが出来ます。

「find」の利用方法(拡張子「.cgi」の権限を「555」に変更)
$ find . -type f -name "*.cgi" -exec chmod 555 {} \;

「-type f」の指定は、「一般的なファイルが対象」の意味です。
「-type d」とすると、ディレクトリが対象になります。

たとえば、特定のディレクトリ配下のディレクトリの権限を「755」にするには、下記のようにします。

「find」の利用方法(ディレクトリの権限を「755」に変更)
$ find . -type d -exec chmod 755 {} \;


あなたの探し物は見つかりましたか?
まさにこれだ 参考になった ちょっと違う これじゃない
何かコメントがあればお願いします


目次に戻る

image