PC内にあるファイルを探す最適なコマンドは何でしょうか?
例えば、index.htmlというファイルがPC内にあるはずなのに見つからない!
そんな時、みなさんはどうしていますか?
※linux(UNIX)コマンドで探す方法について、ある方に説明したメモをシェアします。
おそらく、一般的な解答はこのようになるのだろうと思います。
find / -name index.html 2>/dev/null
・・・ただ、findは再帰的にディレクトリ内を探すので、個人的には好きではありません(推測ですが / を探索するとえらくメモリを消費する気がします)リソースが豊富なマシンであれば問題ないと思いますが、探索範囲をもう少し絞り込むべきでしょう。
※ここでは多くは語りませんが…find系の再帰処理をするコマンドで痛い目にあったことが過去にあるためセンシティブになってしまいます^^; 本番環境でこのようなコマンドは打たない方が無難です…※
ちなみに「2>/dev/null」は標準エラー出力を捨てるための記述です。
ちなみに邪道かもしれませんが、私の場合はファイルを探す時にlsを使うことが多いです。
こんな感じです。
ls /home/user/*/*/index.html
*はワイルドカードです。grepを組み合わせることもあります。
findでもオプションを使って再起検索をoffにすれば問題ないですが、それだとfindのいいところを失わせてしまっている気がします。
※他に何かよい方法論や考え方があれば教えて下さい。何かの参考になれば幸いです。
locate
はどうですか?https://linuxjm.osdn.jp/html/GNU_findutils/man1/locate.1.html
コメントありがとうございます。
たしかにlocateはファイルを探すために作られたコマンドのようで…これを使うのが良さそうですね^^; 勉強になりました。