助け合いフォーラム

Essentials

Linux Essentials(Ver1.6)
問題ID : 2798
問題を開く
以下のコマンドの意味として正しいものはどれか。二つ選べ。
 $ find subdir -type d -name test03

正解

検索の起点ディレクトリは「subdir」である

名前が「test03」のディレクトリを検索している

解説

findコマンドの書式と指定可能なオプションの一部です。


設問のコマンドを分解すると、以下のようになります:
 $ find subdir -type d -name test03
 ・subdir ... 検索起点ディレクトリ。ディレクトリ「subdir」以下を検索する
 ・-type d ... 検索式。ディレクトリを検索する
 ・-name test03 ... 検索式。名前が「test03」のものを検索する
アクションである「-print」は省略可能で、指定しなくても検索結果は表示されます。

以上より正解は
・検索の起点ディレクトリは「subdir」である
・名前が「test03」のディレクトリを検索している
です。

コマンドの実行結果は以下の通りです。


その他の選択肢については、上述の説明を参照してください。

参考

【ファイルやディレクトリの配置と検索】
Linuxのファイル管理は「/(ルート)」を基点とする階層構造になっています。


それぞれのディレクトリ(フォルダ)に役割が決められており、格納されるファイルもルールに従って配置されています。
例えば上記の例では、「/home」はユーザーごとのファイルが配置されるディレクトリであるため、システムに影響を及ぼすようなファイルは(意図的にそうしない限りは)配置されません。

「/usr/share」ディレクトリはマニュアルなどのドキュメントなどが配置されています。
例)lsコマンドのオンラインマニュアル
 /usr/share/man/man1/ls.1.gz
例2)lsコマンドのinfoマニュアル
 /usr/share/info/coreutils.info.gz

オンラインマニュアル(manコマンドで参照できるマニュアル)は、ページャと呼ばれるプログラムを用いてマニュアル用のファイルを参照しています。
なお、ページャプログラム(コマンド)はデフォルトでは「less」や「more」というコマンドが使用されており、スクロールや操作方法はこれらのコマンドと同じです(less、moreコマンドについては、分野「ファイルからのデータの検索と抽出」を参照してください)。

「/usr/share」ディレクトリにある「doc」ディレクトリは、各ソフトウェアに関連するドキュメントが配置されています。具体的にはソフトウェアの説明書「README」、更新履歴などのドキュメントや、設定ファイル(※)のサンプルなどが含まれていることがあります。ソフトウェアをインストールした際は、「/usr/share/doc/<ソフトウェア名>」ディレクトリ配下を参照してみるとよいでしょう。
※設定ファイルとは、ソフトウェアの動作を定義するためのファイルです。例えば複数のコンピュータでの動作を定義する際にコンピュータ名を記述したり、パッケージの取得元のURL(分野「主なオープンソースアプリケーション」を参照)などを記述します。

以下は、lsコマンドが含まれるパッケージ「coreutils」のドキュメントです。


「/usr/share/doc」ディレクトリ配下のファイルには特にルールはないため、ソフトウェアが利用するファイルを配置してあったり、前例のようにテキストや謝辞のようなソフトウェアが利用しないファイルも配置されています。

【検索機能】
Linuxでファイルやディレクトリを検索する際に利用できるコマンドには主に以下の三つがあります。

・locate ... ファイル・ディレクトリ名で検索
・find ... ファイル・ディレクトリ名や更新・作成日、検索対象の場所など様々な条件で検索
・grep ... ファイルに含まれる文字または文字列を検索

これらのうち、grepコマンドはファイルそのものではなく、ファイル内に含まれる文字または文字列で検索することができます。
※grepコマンドは分野「ファイルからのデータの検索と抽出」で学習します。

●locateコマンド
【書式】
 locate <キーワード>

locateコマンドはキーワードに関連するファイルやディレクトリを検索します。
あらかじめ作成された検索用データベースに沿って、検索パターンに合致したファイルやディレクトリを検索するため、非常に高速に結果を得ることができます。

以下は実際の実行例です。

例)キーワード「2019」のついたファイルまたはディレクトリを検索する


●findコマンド


findコマンドは指定したディレクトリ以下からファイルやディレクトリを検索します。
locateコマンドより複雑な条件での検索が可能です。また、locateコマンドのように検索用データベースを持つわけではなく、指定されたディレクトリ内を検索するため、検索条件によってはコマンドに時間がかかることもあります。

以下は実際の実行例です。

例)ディレクトリ「/tmp」以下から、最終更新日が3日以内、かつファイル名が「abc」のファイルを検索する
上に戻る

findの-nameオプションについて

投稿日 2022/06/27

解説に示されている表の-nameオプションの説明に語弊があるような気がする。

問題に示されているように、$ find subdir -type d -name testは、
testディレクトリを検索するコマンド。
「-name <ファイル名>」とまとめてしまうと、ディレクトリの中にあるtestファイルを探すコマンドということになってしまわないか。

スタッフからの返信

s staff_khira0410

2022/06/28 08:51

bsj1010 さん ご指摘の点を修正いたしました。 ご報告、誠にありがとうございました。

この投稿に対して返信しませんか?