Macを使っていて、ちょっとファイルを検索したいときは、スポットライトやFinderの検索窓からファイルを検索していると思う
あれはあれですごく便利だし、さくっと検索できてお目当てのファイルを見つけられるなら、そっちを使った方がすごく良いだろう
けど、もし検索対象が多くなってしまって重くなっていたり、ターミナル(黒い画面)を使ってサクッと検索したりしてみたいという場合はちょっとしたコマンドを使うとすごく便利♪
あとノンプログラマでも、コマンドを使ってみたい!黒い画面でごにょごにょしてみたい!という願望をお持ちの方もぜひ使ってみると、周りの人に一目置かれるようになるかも?(笑)
まぁ前置きはこのぐらいにしておいて、今回紹介するコマンドは下記
find . -name “*txt”|xargs grep “テスト”
いくつか複合されているから、一気に見ると、そっ閉じしたく成るかもしれない(笑)
それはそれでもいいけど、実はそんな難しいことをしているわけではないので、少し我慢してみても時間の無駄にはならないと思う
回りくどくなってしまったけれども、1つずつ簡単に解説をしていく
まず、さっきのコマンドを要素に分解してみる
①find . -name “*txt”
② | (パイプと読む)
③ xargs
④ grep “テスト”
解説:
①find . -name “*txt" findコマンドが使われている。その他はオプションと検索文字。 オプションで指定されている最初のドット「.」は、今いるディレクトリ(フォルダ)の下すべてという意味。 例えば、~/Documents/という場所で、「find . 」を使うと、ドキュメントフォルダの下から探してね!って意味。 -name “*txt” ←これは、txtという拡張子を持つフォルダすべてを探してね!って意味。(アスタリスク(*)はすべてという意味を持つよ」 ここに「-name “*”」という感じで指定すると、ちょっと重くなるから、探すときは拡張子を指定して上げたほうがより速いかな。
② | (パイプ) パイプって読むんだけど、これはターミナルとかでコマンドをつなげるって意味で捉えておくとok だから、今回の場合は、findコマンドとxargs(とgrep)コマンドをつなげて実行しますよ。ってこと。
③xargs こいつはちょっと特殊。パイプと似たような役割だったりするけど、ちょっと違う。 渡されてきた結果に対して、その次に指定されるコマンドを実行しますよ。という感じ。 今回の場合は、findで探してきた結果に対して(次で解説する)grepというコマンドを実行するよ。ってこと。
④grep “テスト" grepコマンド。指定された文字を抽出して、該当する行のみを表示するよ。って感じのコマンド。 grep “テスト”は、テストという文字に該当する箇所のみを表示してくれる。
そんな感じで、①〜④までを合わせると、
①”*txt”というファイルを探して、②と③でその中身を開いて、④”テスト”という文字がある場合は、該当するファイルと箇所を表示してね!
という感じになる。
xargs←こいつがいないと、findで探したファイルに対して「grep “テスト”」が実行されるから、
「ファイル名にテストが付いているものを表示する」
とちょっと検索内容が違ってくるので注意。
その他にも、find, xargs, grepには色々と便利なオプションが存在していたりするから、気になる人はお試しあれ。