Linuxにてファイル検索、ファイル内の文字列検索のコマンド

# 概要
本記事はLinux環境でファイル名を検索及びファイル内の文字列検索をするコマンドを確認します。
どのファイルがどこに入っているか確認とソース上にこの関数を使っているファイル一覧を調べるには便利です。

# ファイル検索コマンド
次のコマンドでファイル名を検索ができます。

■コマンドの例
~~~bash
sudo find / -name "php.ini"
~~~

■コマンドの説明
sudo：「/」以下のディレクトリから検索するため、root権限が必要
/：「/」以下のすべてのディレクトリから検索します。
-name：「ファイル名」を検索します。
"php.ini"：検索対象のファイル名を入力します。

■コマンドの実行結果
以下のようにファイルのパスも含めてファイル名が表示されます。

~~~bash
pi@raspberrypi:~ $ sudo find / -name php.ini
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/php/7.4/apache2/php.ini
/etc/php/7.4/cli/php.ini
~~~

# 特定ファイル内の文字列検索コマンド
次のコマンドでファイル内の文字列を検索ができます。

■コマンドの例
~~~bash
sudo find / -name "*.ini"|xargs grep "max_"
~~~

■コマンドの説明
sudo：「/」以下のディレクトリから検索するため、root権限が必要
/：「/」以下のすべてのディレクトリから検索します。
-name：「ファイル名」を検索します。
"*.ini"：拡張子が「.ini」ファイル内の文字列を検索します。
|xargs grep "max_"：ファイル内に「max_」がある行を出力します。

■コマンドの実行結果
以下のようにファイルのパスも含めてファイル名と内容が表示されます。

~~~bash
pi@raspberrypi:~ $ sudo find / -name "*.ini"|xargs grep "max_"
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/php/7.4/apache2/php.ini:; max_input_time
/etc/php/7.4/apache2/php.ini:; The unserialize_max_depth specifies the default depth limit for unserialized
/etc/php/7.4/apache2/php.ini:; during unserialization. The unserialize_max_depth ini setting can be
/etc/php/7.4/apache2/php.ini:; overridden by the max_depth option on individual unserialize() calls.
/etc/php/7.4/apache2/php.ini:;unserialize_max_depth = 4096
/etc/php/7.4/apache2/php.ini:max_execution_time = 30
/etc/php/7.4/apache2/php.ini:max_input_time = 60
/etc/php/7.4/apache2/php.ini:;max_input_nesting_level = 64
/etc/php/7.4/apache2/php.ini:;max_input_vars = 1000
/etc/php/7.4/apache2/php.ini:log_errors_max_len = 1024
/etc/php/7.4/apache2/php.ini:post_max_size = 8M
/etc/php/7.4/apache2/php.ini:upload_max_filesize = 2M
/etc/php/7.4/apache2/php.ini:max_file_uploads = 20
/etc/php/7.4/apache2/php.ini:odbc.max_persistent = -1
/etc/php/7.4/apache2/php.ini:odbc.max_links = -1
/etc/php/7.4/apache2/php.ini:mysqli.max_persistent = -1
/etc/php/7.4/apache2/php.ini:mysqli.max_links = -1
/etc/php/7.4/apache2/php.ini:;oci8.max_persistent = -1
/etc/php/7.4/apache2/php.ini:pgsql.max_persistent = -1
/etc/php/7.4/apache2/php.ini:pgsql.max_links = -1
/etc/php/7.4/apache2/php.ini:ldap.max_links = -1
/etc/php/7.4/apache2/php.ini:;opcache.max_accelerated_files=10000
/etc/php/7.4/apache2/php.ini:;opcache.max_wasted_percentage=5
/etc/php/7.4/apache2/php.ini:;opcache.max_file_size=0
/etc/php/7.4/cli/php.ini:; max_input_time
/etc/php/7.4/cli/php.ini:; The unserialize_max_depth specifies the default depth limit for unserialized
/etc/php/7.4/cli/php.ini:; during unserialization. The unserialize_max_depth ini setting can be
/etc/php/7.4/cli/php.ini:; overridden by the max_depth option on individual unserialize() calls.
/etc/php/7.4/cli/php.ini:;unserialize_max_depth = 4096
/etc/php/7.4/cli/php.ini:max_execution_time = 30
/etc/php/7.4/cli/php.ini:max_input_time = 60
/etc/php/7.4/cli/php.ini:;max_input_nesting_level = 64
/etc/php/7.4/cli/php.ini:;max_input_vars = 1000
/etc/php/7.4/cli/php.ini:log_errors_max_len = 1024
/etc/php/7.4/cli/php.ini:post_max_size = 8M
/etc/php/7.4/cli/php.ini:upload_max_filesize = 2M
/etc/php/7.4/cli/php.ini:max_file_uploads = 20
/etc/php/7.4/cli/php.ini:odbc.max_persistent = -1
/etc/php/7.4/cli/php.ini:odbc.max_links = -1
/etc/php/7.4/cli/php.ini:mysqli.max_persistent = -1
/etc/php/7.4/cli/php.ini:mysqli.max_links = -1
/etc/php/7.4/cli/php.ini:;oci8.max_persistent = -1
/etc/php/7.4/cli/php.ini:pgsql.max_persistent = -1
/etc/php/7.4/cli/php.ini:pgsql.max_links = -1
/etc/php/7.4/cli/php.ini:ldap.max_links = -1
/etc/php/7.4/cli/php.ini:;opcache.max_accelerated_files=10000
/etc/php/7.4/cli/php.ini:;opcache.max_wasted_percentage=5
/etc/php/7.4/cli/php.ini:;opcache.max_file_size=0
~~~

# findコマンドの主なオプションたち
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/2783a732-99bc-ab4b-69cb-d4396674c2ea.png)

# 参照サイト
■findコマンドの主なオプションたち

https://academy.gmocloud.com/wp/lesson/20191213/8268

# 終わりに
今日はLinux環境でファイル検索及び特定ファイル内の文字列を検索するコマンドを確認できました。
findコマンドの主なオプションには指定した日数以前に更新されたファイルを検索するオプションもありますので、当日修正されたファイル一覧調査する場合、便利だと思います。
実際のコマンドは試していないですが、参照サイトに例としてありますので、ご参考してみてください。
今日はここまでです。
ありがとうございます。