深いディレクトリ階層の中から特定のファイルを探したり、ワイルドカードが使えないコマンドでワイルドカードのニーズを満たす方法として「find」が提供されています。
このページでは、この「find」の使い方について説明します。
FreeBSDとLinuxでは、各種設定ファイルの保存場所が異なるため、片方に慣れた人がもう片方の環境で設定を行う場合に苦労することが多いのではないでしょうか?
ファイル名が分かっているが、そのファイルがどのディレクトリに配置されているか分からない場合は、findを以下のように使うことにより、指定のファイルの配置場所を見つけることが出来ます。
$ find . -type f -name "httpd.conf" -print
上記の例では、カレントディレクトリおよびその配下の階層から「httpd.conf」というファイルを探し、そのファイルのフルパスを表示します。
カレントディレクトリのみを検索対象とし、その配下の階層を検索対象としない場合には、以下のようにしてください。
$ find . -maxdepth 1 -type f -name "httpd.conf" -print
次に、ワイルドカードに対応していないコマンドを、擬似的にワイルドカードがあるように使う方法について説明します。
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 {} \;
大文字小文字を区別せずマッチさせるには、「-iname」を利用します。
$ find . -type f -iname "*.rm" -exec mv {} /tmp \;
・大文字小文字を区別しない指定「-iname」の説明を追記。
・指定した階層のディレクトリのみを探索し、配下の階層を検索しないパラメータ「-maxdepth 1」の説明を追記。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まさにこれだ 1 (50%) |
参考になった 1 (50%) |
表示できるメッセージはありません。