ルートディレクトリから特定のファイルがどこにあるか、探す方法を記載します。
rootユーザーで実行すればあまり困らないかもしれませんが、一般ユーザーからコマンドを実行するとノイズが多く、出力結果が見にくいのでそのあたりの対策についても記載します。
基本書式は以下の通り。
find <検索開始ディレクトリ> <検索条件>
次のコマンドでは、rootユーザーでhogeX.txtを探しています。(Xは数字)
-name
は検索対象がファイルであること示すオプションです。
*
は任意の0以上の文字を示す正規表現です。
[root@centos8 /]# find / -name 'hoge*.txt'
/home/vagrant/test/hoge1.txt
/home/vagrant/test/hoge2.txt
/home/vagrant/test/hoge3.txt
次は一般ユーザー(vagrant)でhogeX.txtを探しています。(Xは数字)
普通に実行すると権限の無いディレクトリにもアクセスしてしまい、実行結果が見にくくなります。
[vagrant@centos8 /]$ find / -name 'hoge*.txt'
ind: ‘/usr/share/selinux/targeted/default/active’: 許可がありません
find: ‘/usr/libexec/initscripts/legacy-actions/auditd’: 許可がありません
/home/vagrant/test/hoge1.txt
/home/vagrant/test/hoge2.txt
/home/vagrant/test/hoge3.txt
find: ‘/home/tomcat’: 許可がありません
find: ‘/home/hoge1’: 許可がありません
find: ‘/home/hoge01’: 許可がありません
find: ‘/home/hoge02’: 許可がありません
find: ‘/opt/apache-tomcat-9.0.50/conf’: 許可がありません
find: ‘/opt/apache-tomcat-9.0.50/bin’: 許可がありません
find: ‘/opt/apache-tomcat-9.0.50/lib’: 許可がありません
find: ‘/opt/apache-tomcat-9.0.50/logs’: 許可がありません
find: ‘/opt/apache-tomcat-9.0.50/temp’: 許可がありません
find: ‘/opt/apache-tomcat-9.0.50/webapps’: 許可がありません
find: ‘/opt/apache-tomcat-9.0.50/work’: 許可がありません
find: ‘/tmp/systemd-private-023e2836e8a94d4cb3e941fcc1e74378-chronyd.service-9snpUj’: 許可がありません
find: ‘/tmp/systemd-private-023e2836e8a94d4cb3e941fcc1e74378-php-fpm.service-mVZXVG’: 許可がありません
find: ‘/tmp/systemd-private-023e2836e8a94d4cb3e941fcc1e74378-httpd.service-WtCkt8’: 許可がありません
要はアクセス許可がないというエラーが出ているので、それを消してあげれば見やすくなります。
そこで、先ほどのコマンドの末尾に2>/dev/null
を付けて実行してみます。
[vagrant@centos8 /]$ find / -name 'hoge*.txt' 2>/dev/null
/home/vagrant/test/hoge1.txt
/home/vagrant/test/hoge2.txt
/home/vagrant/test/hoge3.txt
これで見やすくなりました。
2>/dev/null
は、標準エラー出力(2>
)を/dev/null
というLinuxのスペシャルファイル(そこに書き込まれたデータを全て捨てる)に出力するコマンドです。