Linux üzerinde bir dizin nasıl bulunur?


453

Suse Linux 10.3 ile bir VPS'im var .

SSH / macun üzerinden giriş yaptım ve web dosyalarımın nerede olduğunu bulmaya çalışıyorum.

FTP üzerinden httpdocs adlı bir dizine yüklediğim için bu dizinin bir yerde bulunduğunu varsayıyorum.

Google aramalarım bunu yapmamı öğretti, kök dizinime gidin ve şunu yazın:

find httpdocs -type d

ancak " Böyle bir dosya veya dizin yok " yazıyor .

Bu dizini nasıl bulabilirim?


4
Birisinin merak etmesi durumunda, sorudaki komut -type d, dizin girişindeki tüm dizinleri ( ) bulur ( httpdocsmevcut çalışma dizinine göre, ancak genellikle bir dizin değildir). Hata mesajı ile başarısız olur, çünkü httpdocssistemin kök dizininde bir dizin girişi yoktur ve bu nedenle bir arama için başlangıç ​​noktası yoktur.
Daniel Beck

Yanıtlar:


609

Bu:

find / -type d -name 'httpdocs'

ilk parametre "/" nereye bakılacağı, bu durumda "/" tüm sistemdir.

-name, davayı yoksaymak için -iname olabilir

ayrıca -tipi zorunlu değildir

kullanım: adam daha fazla seçenek bul


2
'httpdocs' bulmak / -name bulmak harika çalışıyor
Edward Tanguay

91
Basit aramalar için önemli olmayabilir, ancak daha karmaşık bulma komutları için, şeylerin komut satırındaki sırayla değerlendirildiğine dikkat etmek önemlidir. Bu nedenle, işleri hızlandırmak için önce -ty (d) dizinine (yalnızca dizinler) sahip olmak isteyebilirsiniz. Yine, bu burada çok önemli olmayabilir, ancak daha karmaşık aramalara girerken arama hızını önemli ölçüde artırabilir.
Dominic Eidson

14
Aslında, -nametest, diğer testlerin çoğundan daha hızlıdır, çünkü -namezaten diskten yüklenmiş olan yönetmen listesine göre eşleştirilir ve diğer testlerin stat(2)dosya bilgilerini almak için bir işlemi yapması gerekir. İlk sonra stat()bir dosya için çağrı, bir sonraki testler, bellekten örn olsun: -type f -mtime -10.
Arcege

24
Tüm dosya sisteminde, özellikle de bir sunucuda bir arama yapacaksanız, o zaman kullanımı daha iyidir, nicebu nedenle bulmanın daha kritik işlemlerden çok fazla kaynak nice find / ...
almaması gerekir

16
Arama sonuçlarımın tüm izin hatalarında gizlenmesini önlemek için 2> / dev / null değerini eklerdim.
Jason Yeo

63

bu komut size aradığınızı vermelidir:

find / -type d -name httpdocs

httpdocs adını taşıyan dizinler için sunucunuzun kökünden arama yapacak veya geçerli dizinden arama yapmak istiyorsanız '/' yerine '' yazınız.

Deneyebileceğiniz başka bir komut, şöyle bir şey yapacağınızı bulmaktır:

locate httpdocs

locate httpdocs bana "locate: komut bulunamadı"
Edward Tanguay

4
"Locate" komutunu kullananlar için (sisteminizde var olduğu düşünülürse), aradığı veritabanının güncel olduğundan emin olun; normalde bazı cron işi halleder. Aksi takdirde, "updatedb" (kök olmak) komutunu çalıştırın. Sonra gerekli "bulun <somefile>" komutunu çalıştırın. Bu, son eklenen dosyalar / dir'ler bulmak için gereklidir.
David Ramirez

Bulun için +1. Bu var çok hızlı ama onun indeks güncel olması halinde. Neyse ki, "httpdocs" gibi bir şey sık sık yerini değiştirmez. Bir makinede dosyaları tekrar tekrar aramayı planlıyorsanız, updatedb cron işini ayarlamak için gereken birkaç dakikaya değer.
Doug Harris

1
Ayrıca birçok durumda, bu dizindeki tüm 100k dosyaları görüneceğinden, locate çok fazla sonuç döndürür. Bu özel durumda, her kullanıcının 100 veya 1000 dosyalı kendi httpdoc'una sahip olması durumunda OP'nin istediği sonuç muhtemelen kaybolur.
Jistanidiot,

Bulmak için +1 ... Veritabanımı güncel tutuyorum, bu yüzden bu komut çok kullanışlı ... Harika bir fikir.
nicorellius


13

Parametreyi bilmek "adı duyarsız" kalıpları ve joker karakterlerin kullanımını bilmek önemlidir: *,?, Vb.

İki örnek:

Duyarsız durumda, "Linux" dizesini içeren / root dizinindeki tüm dosyaları arayın:

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

Duyarsız "Linux" dizesini içeren / root dizinindeki tüm dizinleri arayın:

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

Buradan çıkarılan:

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


Bu soru, adını bildiğiniz bir dizini nasıl bulacağınız, adını bildiğiniz bir dizini nasıl bulacağınız (yaklaşık olarak) ile ilgilidir. Ayrıca, kabul edilen cevap (6 yıldan daha uzun bir süre önce!) Halihazırda büyük / -inameküçük harfe duyarsız bir alternatiftir -name.
G-Man

9

Neredeyse ona sahipsin. doğru sözdizimi şöyle olurdu:

find / -type d -name httpdocs

Dizin altında /var/www/


Bu bana "yollar ifadeden önce gelmeli" diyor
Edward Tanguay
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.