Jak znaleźć katalog na Linuksie?

453

Mam VPS z Suse Linux 10.3 .

Zalogowałem się przez SSH / putty i próbuję znaleźć lokalizację moich plików internetowych.

Ponieważ przesyłam przez FTP w katalogu o nazwie httpdocs , zakładam, że ten katalog gdzieś istnieje.

Moje wyszukiwania google nauczyły mnie tego, przejdź do katalogu głównego i wpisz:

find httpdocs -type d

ale mówi „ Nie ma takiego pliku ani katalogu ”.

Jak mogę znaleźć ten katalog?

Edward Tanguay
źródło
4
W przypadku, gdy ktoś się zastanawia, polecenie znajdujące się w pytaniu znajduje wszystkie katalogi ( -type d) we wpisie katalogu httpdocs(w stosunku do bieżącego katalogu roboczego, zwykle, ale niekoniecznie katalogu). Komunikat o błędzie kończy się niepowodzeniem, ponieważ w katalogu httpdocsgłównym systemu nie ma pozycji katalogu, a zatem nie ma punktu początkowego wyszukiwania.
Daniel Beck

Odpowiedzi:

609

To jest:

find / -type d -name 'httpdocs'

pierwszy parametr „/” to gdzie szukać, w tym przypadku „/” to cały system.

-name może być -iname, aby zignorować wielkość liter

także -typ nie jest obowiązkowy

użyj: man find, aby uzyskać więcej opcji

OldJim
źródło
2
find / -name „httpdocs” działa świetnie dzięki
Edward Tanguay
91
Może to nie mieć znaczenia w przypadku prostych wyszukiwań, ale w przypadku bardziej skomplikowanych poleceń wyszukiwania warto zauważyć, że rzeczy są oceniane w kolejności, w jakiej znajdują się w wierszu poleceń. Możesz więc chcieć mieć -type d (tylko katalogi) przed -name, aby przyspieszyć. Ponownie, tutaj może to nie mieć większego znaczenia, ale wchodzenie w bardziej złożone wyszukiwania może znacznie przyspieszyć wyszukiwanie.
Dominic Eidson
14
W rzeczywistości -nametest jest szybszy niż większość innych testów, ponieważ -namejest on porównywany z listą katalogu, który jest już załadowany z dysku, a inne testy muszą wykonać, stat(2)aby uzyskać informacje o pliku. Po pierwszym stat()wywołaniu pliku kolejne testy są pobierane z pamięci, np -type f -mtime -10. :
Arcege
24
Jeśli zamierzasz przeprowadzić wyszukiwanie na całym systemie plików, a zwłaszcza na serwerze, zwykle warto go użyć, niceaby wyszukiwanie nie nice find / ...
pobierało
16
Dodałbym 2> / dev / null, aby uniknąć ukrywania moich wyników wyszukiwania we wszystkich błędach uprawnień.
Jason Yeo,
63

to polecenie powinno dostarczyć ci tego, czego szukasz:

find / -type d -name httpdocs

który przeszuka z katalogu głównego serwera katalogi o nazwie httpdocs lub jeśli chcesz tylko wyszukać z bieżącego katalogu, zamień „/” na „.”

Innym poleceniem, które możesz wypróbować, jest zlokalizowanie, że zrobiłbyś coś takiego:

locate httpdocs
Zypher
źródło
locate httpdocs mówi mi: „locate: command not found”
Edward Tanguay
4
W przypadku osób korzystających z polecenia „locate” (biorąc pod uwagę, że istnieje on w systemie), upewnij się, że baza danych, którą wyszukuje, jest aktualna; zwykle zajmuje się tym jakaś praca crona. W przeciwnym razie uruchom „updatedb” (będąc rootem). Następnie uruchom potrzebny „locate <somefile>”. Jest to konieczne do znajdowania ostatnio dodanych plików / katalogów.
David Ramirez,
+1 za lokalizację. Jest o wiele szybszy, ale tylko pod warunkiem, że jego indeks jest aktualny. Na szczęście coś takiego jak „httpdocs” nie zmienia często lokalizacji. Jeśli planujesz wielokrotnie wyszukiwać pliki na komputerze, warto poświęcić kilka minut na skonfigurowanie zaktualizowanego zadania cron.
Doug Harris
1
Również w wielu przypadkach locate zwróci zbyt wiele wyników, ponieważ pokażą się wszystkie pliki 100k w tym katalogu. W tym konkretnym przypadku, jeśli każdy użytkownik ma swoje własne httpdocs zawierające 100 lub 1000 plików, wynik, który chce OP, prawdopodobnie zostanie utracony.
Jistanidiot
+1 za lokalizację ... Aktualizuję moją bazę danych, więc to polecenie jest bardzo przydatne ... Świetny pomysł.
nicorellius
27
find / -type d -name httpdocs 2> /dev/null

To wyeliminuje wszystkie komunikaty o błędach, które prawdopodobnie (czytaj, zawsze) otrzymujesz, gdy nie robisz tego jako użytkownik root. Poleciłbym to zrobić w ten sposób.

użytkownik2940456
źródło
2
Ta 2> /dev/nullopcja jest bardzo pomocna. W przeciwnym razie może być trudno zobaczyć pożądane wyniki ...
Gottlieb Notschnabel
13

Ważne jest, aby znać parametr -iname, aby wyszukiwać wzorce bez rozróżniania wielkości liter i używać symboli wieloznacznych: *,? Itp.

Dwa przykłady:

Wyszukaj wszystkie pliki w katalogu / root, które zawierają ciąg „Linux”, bez rozróżniania wielkości liter:

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

Przeszukaj wszystkie katalogi z katalogu / root, które zawierają ciąg „Linux”, bez rozróżniania wielkości liter:

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

Wyodrębniono stąd:

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

LunaSeven
źródło
To pytanie dotyczy tego, jak znaleźć katalog o znanej nazwie, a nie jak znaleźć katalog (o przybliżonej nazwie). Poza tym w przyjętej odpowiedzi (sprzed ponad 6 lat!) Wspomniano już -inamejako nie uwzględniającą wielkości liter alternatywę dla -name.
G-Man,
9

prawie to masz. poprawna składnia to:

find / -type d -name httpdocs

Katalog prawdopodobnie znajduje się poniżej /var/www/

chrisbunney
źródło
to mówi mi: „ścieżki muszą poprzedzać wyrażenie”
Edward Tanguay