Contents / 目次
findコマンドを使おう
ファイルやディレクトリを検索するときは、findコマンドを使ってみましょう。
主にfindコマンドでは検索するpathと条件を指定します。
条件としてよく使うのが、名前やファイルタイプかと思います。
$ find 検索path 検索条件 検索内容
-nameを用いて名前で検索
ファイル名やディレクトリ名での検索方法を紹介します。
検索条件を -nameとします。
$ find 検索path -name 検索内容
例えば今のカレントディレクトリ以下でtestというディレクトリを探す場合
$ find ./ -name test
$ find -name test
#検索pathは標準で./なので省略可
ファイル名での検索も可能です。例えばtest.txtというファイルを探すとき
$ find ./ -name test.txt
$ find -name test.txt
と書くことで検索できます。
ワイルドカード*を使う
ファイル名検索の場合、拡張子の種類だけを指定して検索する場合などは、
ワイルドカードを使用することができます。
ただし、ワイルドカードを使用するときはシングルクオート”か
ダブルクオート””で囲むようにしてください。
例えばtxtファイルをカレントディレクトリ以下で検索するときは
下記のように書きます。
$ find ./ -name "*.txt" #クオートで囲んで指定してあげる
なぜ、クオートで囲む必要があるかといいますと、txtファイルが複数ある場合、
findコマンドの-name 後の検索内容引数として複数選択されてしまい、
結果がエラーとなるからです。
例えばカレントディレクトリにtest1.txtとtest2.txtとtest3.txtと
3つtextファイルが存在しているとします。
クオートで囲まずにfind検索をかけた場合
$ find ./ -name *.txt #クオートで囲まずに指定
*.txtの部分がtest1.txt test2.txt test3.txtと書き換えられてしまうので
$ find ./ -name test1.txt test2.txt test3.txt
を実行していることと同じことになってしまい、エラーとなります。
ワイルドカードを使用するときはシングルクオート”かダブルクオート””で
囲むようにしてください。
-typeを用いてファイル種類で検索
名前だけでなく、ファイル種類で検索することができます。
その際には-name ではなく -typeを使用します。
ファイル種類は通常ファイル/ディレクトリ/シンボリックリンクで
検索できます。
-type f: 通常ファイル
-type d: ディレクトリ
-type l: シンボリックリンク
例えばカレントディレクトリ以下にあるディレクトリを検索する場合は
以下のように入力します。
$ find ./ -type d #カレントディレクトリ以下のディレクトリを検索
終わりに
ファイルやディレクトリを検索することはよくあることかと思いますので、
ぜひ、覚えて使用してみてください。
ワイルドカード使用時にはクオートを忘れずに。
Have a nice Linux life!