2021.10.02  

【Linux】findで再帰的検索をおこなう(一般ユーザーでルートディレクトリから検索)

Linux    

ルートディレクトリから特定のファイルがどこにあるか、探す方法を記載します。

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のスペシャルファイル(そこに書き込まれたデータを全て捨てる)に出力するコマンドです。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信