Linux/Ubuntu のディレクトリ内で名前によるフォルダの再帰検索方法
Ubuntu で Find コマンドを使ってディレクトリを検索する方法(簡単)
特定の名前のフォルダを探すのに、フォルダをクリックするのに長い時間を費やしたことがあるなら、デフォルトのファイルエクスプローラーの遅さにうんざりしたことがあるかもしれません。そこでこのfind
コマンドの真価が発揮されます。ターミナルを操作し、ディレクトリを再帰的に探し出します。まるで干し草の山から針を探すような作業です。魔法ではありませんが、このツールを使いこなす方法を知っていれば、作業は格段に楽になります。特に、大量のファイルを調べているときに、延々とクリックし続けるのは面倒だと感じる場合はなおさらです。一度コツをつかめば、膨大な時間を節約できます。
ステップ1:ターミナルを開く
まず、まだターミナルを開いていない場合は、開いてください。一番速いのはCtrl+ Alt+ を押すことですT。これで完了です。あるいは、アプリメニューで「ターミナル」を検索してください。何でも使えるものなら何でもいいです。ここで魔法が起こるので、慣れておきましょう。
ステップ2: ディレクトリを見つけるための基本コマンド
始めるにあたって、覚えておく必要があるのは次のような簡単なコマンドです。
find.-type d -name '*yourword*'
詳しく見てみましょう:
- は、システム全体ではなく、現在いる場所から検索を開始することを意味します。
-type d
ファイルをフィルタリングするので、ディレクトリのみを検索します。-name '*yourword*'
yourword
「yourword」を含むフォルダ名を検索します。探しているものに合わせて置き換えてください。
たとえば、名前に「log」が含まれるフォルダーを探している場合は、次のように入力します。
find.-type d -name '*log*'
これですべてのサブフォルダを配送して、すべての一致が表示されます。ちょっと便利だと思いませんか?
ステップ3:再帰検索とその重要性
はい、このコマンドは現在のフォルダ以下のすべてのサブディレクトリを自動的に検索します。追加の引数は必要ありません。これが非常に強力な理由です。余計な手間をかけずに深くまで探索できるのです。これには隠しフォルダも含まれますが、Unix的な意味での隠しフォルダ(.で始まるファイル)は除きます。ただし、非常に肥大化したシステムでは1秒ほどかかる場合があるので、少しハングしても心配しないでください。
ステップ4: システム全体を検索する(ただし注意)
Linux ツリー全体のどこかで何かを見つける必要がある場合は、次のように調整できます。
sudo find / -type d -name '*log*' 2>/dev/null
ここで、/はルートで、すべてをスキャンします。権限の関係で、「Permission denied」エラーが頻繁に表示されますが、これは正常な動作です。 を追加する2>/dev/null
ことで、これらの煩わしいエラーが抑制され、結果がクリーンな状態になります。sudo で実行すると、他の問題が発生する場合があるので、十分に理解している場合のみ実行してください。
追加のヒントとトラブルシューティング
- 検索文字列にタイプミスがないか、もう一度確認してください。コマンドを実行した後に、文字が抜けていることに気づくのは面倒です。
- 「アクセスが拒否されました」というメッセージが大量に届くようになったら、追加する
sudo
と確かに役立ちます。ただし、毎回気軽にこれを行うのはやめてください。 - 大文字と小文字を区別しない検索には、
-iname
の代わりにを使用します。大文字と小文字の区別がわからない場合に便利です。-name
find.-type d -iname '*Log*'
- 出力をもっとよく見たい時もあります。less :を
find.-type d -name '*log*' | less
使ってパイプすれば、スクロールしても位置がわからなくなります。
結論
ディレクトリをあれこれ探し回るのに時間を費やしている人にとって、これはfind
画期的な機能です。クリック操作の手間が省け、整理やトラブルシューティングの負担がはるかに軽減されます。正直なところ、一部のフォルダが隠れているのは少し奇妙に感じますが、これらのコマンドを使えば、自分で操作できます。そして、確かに、リストがポップアップ表示されるのを見るのはかなり満足感があります。たとえコマンドラインだけだとしても、何かをハッキングしているような気分になります。
よくある質問
一度に複数の名前を見つけることはできますか?
はい、-o
括弧内で (or) を使用できます。例: find.-type d \( -name '*log*' -o -name '*backup*' \)
。bash の場合は括弧をバックスラッシュでエスケープすることを忘れないでください。
検索すると結果が多すぎる場合はどうなりますか?
次のようにパイプしますless
: find.-type d -name '*log*' | less
。こうすることで、位置を失うことなく快適にスクロールできます。
find
すべての Linux ディストリビューションで利用できますか?
はい、ほぼどこでも使えます。標準ユーティリティなので、ご安心ください。Ubuntuならデフォルトで入っています。