深いディレクトリ階層の中から特定のファイルを探したり、ワイルドカードが使えないコマンドでワイルドカードのニーズを満たす方法として「find」が提供されています。
このページでは、この「find」の使い方について説明します。
FreeBSDとLinuxでは、各種設定ファイルの保存場所が異なるため、片方に慣れた人がもう片方の環境で設定を行う場合に苦労することが多いのではないでしょうか?
ファイル名が分かっているが、そのファイルがどのディレクトリに配置されているか分からない場合は、findを以下のように使うことにより、指定のファイルの配置場所を見つけることが出来ます。
$ find . -type f -name "httpd.conf" -print |
上記の例では、カレントディレクトリの配下の階層から「httpd.conf」というファイルを探し、そのファイルのフルパスを表示します。
次に、ワイルドカードに対応していないコマンドを、擬似的にワイルドカードがあるように使う方法について説明します。
FreeBSDのchmodは、「-R」パラメータをつけると「*.cgi」のような複雑なワイルドカード指定を展開してくれません。
たとえば、「chmod -R 555 *.cgi」のように指定しても、パターンマッチに失敗してしまいます。
findを下記のように利用することにより、特定のディレクトリ配下の拡張子「.cgi」のファイルの権限を変えるニーズを満たすことが出来ます。
$ find . -type f -name "*.cgi" -exec chmod 555 {} \;
|
「-type f」の指定は、「一般的なファイルが対象」の意味です。
「-type d」とすると、ディレクトリが対象になります。
たとえば、特定のディレクトリ配下のディレクトリの権限を「755」にするには、下記のようにします。
$ find . -type d -exec chmod 755 {} \;
|
