Linuxでディレクトリを見つける方法は?


453

Suse Linux 10.3で VPSを使用しています。

SSH / putty経由でログインしましたが、Webファイルの場所を見つけようとしています。

httpdocsというディレクトリにFTP経由でアップロードしているため、このディレクトリがどこかに存在すると仮定します。

私のグーグル検索は、これを行うことを教えてくれました、私のルートディレクトリに移動し、入力します

find httpdocs -type d

しかし、「そのようなファイルやディレクトリはありません」と表示されます。

このディレクトリを見つけるにはどうすればよいですか?


4
誰かが疑問に思っている場合、質問のコマンドは、-type dディレクトリエントリ内のすべてのディレクトリ()を検索します(httpdocs現在の作業ディレクトリに関連しますが、通常はディレクトリではありません)。httpdocsシステムのルートディレクトリにディレクトリエントリがないため、エラーメッセージが表示されて失敗します。したがって、検索の開始点がありません。
ダニエルベック

回答:


609

それは:

find / -type d -name 'httpdocs'

最初のパラメータ「/」はどこを見るか、この場合「/」はシステム全体です。

-nameは、大文字と小文字を無視する-inameです。

また、-typeは必須ではありません

使用:はより多くのオプションを見つける


2
find / -name 'httpdocs'は非常に効果的です
Edward Tanguay

91
単純な検索では問題になりませんが、より複雑な検索コマンドでは、コマンドラインでの順序で物事が評価されることに注意する価値があります。そのため、速度を上げるために、-nameの前に-type d(ディレクトリのみ)を付けることができます。繰り返しますが、これはここではそれほど重要ではないかもしれませんが、より複雑な検索に入ると、検索速度を大幅に向上させることができます。
ドミニク・エイドソン2009年

14
実際、この-nameテストは-name、ディスクから既にロードされているディレクトリのリストと一致するため、他のテストのほとんどよりも高速です。他のテストは、stat(2)ファイル情報を取得するためにを実行する必要があります。stat()ファイルの最初の呼び出しの後、後続のテストがメモリから取得されます-type f -mtime -10。例:。
アルセージュ

24
あなたは、ファイルシステム全体、特にサーバー上で検索を実行しようとしている場合、使用することが通常は良いですniceので、検索がより重要なプロセスからあまりにも多くのリソースを取ることはありません:nice find / ...
Arcege

16
2> / dev / nullを追加して、すべての許可エラーで検索結果が隠されないようにします。
ジェイソンヨー

63

このコマンドは、あなたが探しているものを取得するはずです:

find / -type d -name httpdocs

サーバーのルートからhttpdocsという名前のディレクトリを検索するか、単に現在のディレクトリから検索する場合は、「/」を「。」に置き換えます。

試すことができる別のコマンドは、次のようなことを行う場所を見つけることです。

locate httpdocs

探しをhttpdocs「は見つける:コマンドが見つかりません」という私に語った
エドワードTanguay

4
「locate」コマンドを使用する場合(システムに存在する場合)、検索するデータベースが最新であることを確認してください。通常、いくつかのcronジョブがそれを処理します。それ以外の場合は、「updatedb」を実行します(rootになります)。次に、必要な「locate <somefile>」を実行します。これは、最近追加されたファイル/ディレクトリを見つけるために必要です。
デビッドラミレス

ロケートの場合は+1。それはだたくさん速いが、そのインデックスが最新のものである場合にのみ。幸いなことに、「httpdocs」のようなものは場所を頻繁に変更しません。マシン上のファイルを繰り返し検索することを計画している場合、updatedb cronジョブをセットアップするのに必要な数分間の価値があります。
ダグ・ハリス

1
また、多くの場合、そのディレクトリ内のすべての100kファイルが表示されるため、locateはあまりにも多くの結果を返します。この特定のケースでは、すべてのユーザーが100から1000のファイルを持つ独自のhttpdocsを持っている場合、OPが望む結果はおそらく失われます。
ジスタニディオ14

位置特定のための+1 ...データベースを最新の状態に保つため、このコマンドは非常に便利です...素晴らしいアイデアです。
nicorellius

27
find / -type d -name httpdocs 2> /dev/null

これにより、rootユーザーとしてこれを行わない場合に(おそらく常に)表示される可能性のあるすべてのエラーメッセージが削除されます。この方法で行うことをお勧めします。


2
この2> /dev/nullオプションは非常に役立ちます。それ以外の場合は、希望の結果を見ることは難しいことができ...
ゴットリーブNotschnabel


13

パラメータ「-iname」を知って、「大文字と小文字を区別しない」パターンを検索し、ワイルドカード(* 、?など)を使用することが重要です。

2つの例:

文字列「Linux」を含む、大文字と小文字を区別しない/ rootからすべてのファイルを検索します。

find  /root -type f -iname "*linux*"

文字列「Linux」を含む、大文字と小文字を区別しない/ rootからすべてのディレクトリを検索します。

find  /root -type d -iname "*linux*"

ここから抽出:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


この質問は、名前を知っているディレクトリを見つける方法に関するものであり、名前を知っているディレクトリを(おおよそ)見つける方法ではありません。その上、受け入れられた答え(6年以上前から!)は-iname、大文字小文字を区別しない代替案として既に言及しています-name
Gマン

9

あなたはほとんどそれを持っています。正しい構文は次のとおりです。

find / -type d -name httpdocs

ディレクトリはおそらく下にあります /var/www/


それは私に「パスは表現に先行しなければならない」と語っています
エドワード・タンガイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.