皆さんこんにちは!
Linuxのコマンドを使いこなしていますか?
Linuxには便利なコマンドが多数存在します。
サーバー管理に欠かせないコマンドの中から今回は、find(ファインド)コマンドをご紹介いたします。
findコマンドとは?
findコマンドの使い方
findコマンドを使ってみよう!
複数ファイルを同時に検索する
findコマンドの主なオプションたち
ファイルの名前が指定一致しているファイルを検索する【-name オプション】
指定した日数以前に更新されたファイルを検索する【-mtime オプション】
検索対象のファイルタイプを指定して検索する【-type オプション】
まとめ
findコマンドとは?
findコマンドとは、ファイルやディレクトリ(フォルダ)を検索したいときに利用されるLinuxコマンドです。
findコマンドでは、検索対象として複数のファイルやディレクトリが使用できます。
また、パイプ(|)を利用しgrepコマンドなどのコマンドと組み合わせて利用されることが多いコマンドです。
それでは、findコマンドの使い方について具体的にみていきましょう!
findコマンドの使い方
findコマンドの基本書式
findコマンドの基本書式は、以下の通りです。
$find 検索する場所 [オプション] 検索ファイル名
このような記述のみで指定した条件に各当するファイルやディレクトリを簡単に検索することができます。
ただし、検索結果を名前順等に出力はしてくれないため注意が必要です。
findコマンドを使ってみよう!
それでは、findコマンドを使用してみましょう!
今回は「find_test」というディレクトリの中から「test_31.txt」というファイルを探したいと思います。
$ pwd /home/test_user/find_test $ ls find_test100.txt find_test22.txt find_test3.txt find_test5.txt find_test103.txt find_test244.txt find_test41.txt find_test62.txt find_test12.txt find_test2.txt find_test42.txt find_test66.txt find_test163.txt find_test300.txt find_test44.txt find_test7.txt find_test194.txt find_test31.txt find_test51.txt find_test83.txt find_test21.txt find_test34.txt find_test53.txt find_test3.txt
しかし、ファイルが少し多く目で探すと時間がかかりそうですね。
findコマンドはこういったときに役立ちます。
それでは、findコマンドを利用して「find_test31.txt」というファイルを探してみましょう!
$ find find_test31.txt find_test31.txt
ファイルが見つかりました!!
では、逆に存在しないファイルを検索するとどうなるのかをみてみましょう。
先ほどと同じディレクトリ「find_test」から「find_test404.txt」というファイルを探してみます。
$ find find_test404.txt find: `find_test404.txt': No such file or directory
このようにディレクトリ直下にファイルが多数ある場合に存在の有無が確かめられ、非常に便利ですね!
Findコマンドには、他にも便利な使い方があるので、もう少しみていきましょう。
複数ファイルを同時に検索する
ファイル名の末尾にあるナンバリングだけが違うファイル郡の中から、一定の条件のファイルを検索したい場合などもあるのではないでしょうか。
そのような場合はぜひ、findコマンドと一緒にワイルドカード(*)を利用してください!!
使い方は、非常に簡単ですので実例を用いてご紹介します。
先ほどと同じディレクトリ「find_test」から末尾のナンバリングが「1」から始まるファイルを探してみましょう。
$ find find_test1* find_test100.txt find_test103.txt find_test12.txt find_test163.txt find_test194.txt
かなり簡単に末尾が「1」から始まるファイルを検索できました。
このようなfindコマンドの使用方法を覚えればファイルを探す際にスピードアップ間違いなしですね!!
findコマンドの主なオプションたち
オプション | 説明 |
---|---|
-name | ファイルの名前が指定一致しているファイルを検索する |
-mtime 日数 | 指定した日数以前に更新されたファイルを検索する |
-type | 検索対象のファイルタイプを指定して検索する |
-path | ファイルのパスが指定一致しているファイルを検索する |
-iname | -nameオプションと同様だが、文字の大小を区別しない |
-ipath | -pathオプションと同様だが、文字の大小を区別しない |
-atime 日数 | 指定した日数以前にアクセスされたファイルを検索する |
-a | 複数条件を組み合わせて検索する |
ここからいくつか具体的に使用法をみてみましょう!
ファイルの名前が指定一致しているファイルを検索する【-name オプション】
この「-name」オプションが一番使われているオプションといえるのではないでしょうか。
具体的な使い方としては、名前の文字列をキーにファイルやディレクトリを検索したいときに利用します。
それでは、先ほど使ったファイル郡で使用例をみてみましょう。
$ pwd /home/test_user/find_test $ ls find_test100.txt find_test22.txt find_test3.txt find_test5.txt find_test103.txt find_test244.txt find_test41.txt find_test62.txt find_test12.txt find_test2.txt find_test42.txt find_test66.txt find_test163.txt find_test300.txt find_test44.txt find_test7.txt find_test194.txt find_test31.txt find_test51.txt find_test83.txt find_test21.txt find_test34.txt find_test53.txt find_test3.txt
それでは、他のディレクトリから上記のファイルを検索してみましょう。
さらに末尾のナンバリングが「2」から始まるように条件を指定したいと思います。
$ find /home/ -name find_test2* /home/test_user/find_test/find_test2.txt /home/test_user/find_test/find_test22.txt /home/test_user/find_test/find_test21.txt /home/test_user/find_test/find_test244.txt
ファイルを探してくれるばかりか、そのファイルのパス(場所)まで知らせてくれていますね!
かなり便利な使い方ですね!!
指定した日数以前に更新されたファイルを検索する【-mtime オプション】
こちらの検索条件も非常によく使用されているオプションです。
このオプションを利用する際に気を付けないといけない点は、指定日数「より前に更新されたファイル」と「以内に更新されたファイル」で検索する方法が違うという点です。
説明 | 使用方法 |
---|---|
~日より前に更新されたファイルを検索する場合 | 「+」を 指定する日数の前に入れる |
~日以内に更新されたファイル | 「-」を 指定する日数の前に入れる |
それでは、使用方法をみてみましょう。
今回は、1日以内に更新されたファイルを検索したいと思います。
$ find -mtime -1 /home/test_user/find_test/find_test5.txt /home/test_user/find_test/find_test2.txt /home/test_user/find_test/find_test66.txt /home/test_user/find_test/find_test22.txt
こちらも覚えておくとサーバー管理の際にかなり役立つオプションです!
ぜひ、押さえたいところですね。
検索対象のファイルタイプを指定して検索する【-type オプション】
「-name」オプションなどで指定した場合、ファイルを検索したいのに該当する名前のファイルだけではなく、ディレクトリも検索されてしまいます。
このような方法仕様では困ってしまいます。せめてファイルを検索するのか、ディレクトリを検索するのかくらいは指定したいですよね!
そのようなときに役立つのが「-type」オプションです。
オプション | 使用法 |
---|---|
-type f | ファイルを検索するとき |
-type d | ディレクトリを検索するとき |
では、利用してみましょう。
今回は、ファイルを除外してディレクトリを検索したいと思います。
$ find /home/ -name find_test* type d /home/test_user/find_test
これで、一通り「findコマンド」の説明を終えました。
ぜひ、明日から「findコマンド」を使ってみてください!!
まとめ
今回は、findコマンドについてご紹介させていただきました。
findコマンドには、さまざまなオプションがあり、使いこなすことでかなり便利にサーバーを管理できるようになりそうですね。
今後もLinuxコマンドをご紹介していく予定ですので、ぜひご覧くださいね!
それでは、皆さまよりよいサーバーライフをお過ごしください!!