Перейти к содержимому

Как найти каталог на Linux?

413

У меня есть VPS с Suse Linux 10.3 .

Я вошел в систему через SSH / putty и пытаюсь найти, где находятся мои веб-файлы.

Поскольку я загружаю по FTP в каталог с именем httpdocs, я предполагаю, что этот каталог где-то существует.

Мой поиск в Google научил меня это делать, перейдите в мой корневой каталог и введите:

find httpdocs -type d

но там написано " Нет такого файла или каталога ".

Как я могу найти этот каталог?

974 262 просмотра
Edward Tanguay спросил 17 лет назад
E 5 898

5 ответов

566
Принятый ответ

Это:

find / -type d -name 'httpdocs' 

первый параметр "/" - это где искать, в этом случае "/" это вся система.

-name может быть -iname игнорировать регистр

также -тип не обязателен

использовать: человек найти для большего количества вариантов

find / -name 'httpdocs' отлично работает, спасибо

Edward Tanguay · 17 лет назад · 1

Это может не иметь значения для простых поисков, но для более сложных команд поиска стоит отметить, что все оценивается в том порядке, в котором они находятся в командной строке. Итак, вы можете захотеть иметь -type d (только для каталогов) перед -name, чтобы ускорить процесс. Опять же, здесь это может не иметь большого значения, но при более сложных поисках это может значительно повысить скорость поиска.

Dominic Eidson · 17 лет назад · 81

На самом деле тест -name выполняется быстрее, чем большинство других тестов, поскольку -name сопоставляется со списком каталога, который уже загружен с диска, а другие тесты должны выполнить stat (2) для получить информацию о файле. После первого вызова stat () для файла последующие тесты извлекаются из памяти, например: -type f -mtime -10.

Arcege · 14 лет назад · 12

Если вы собираетесь выполнять поиск во всей файловой системе, особенно на сервере, то обычно хорошо использовать nice, чтобы поиск не занимал слишком много ресурсов у более важных процессов:nice find / ...

Arcege · 14 лет назад · 22

Я бы добавил 2> / dev / null, чтобы избежать скрытия результатов поиска во всех ошибках разрешения.

Jason Yeo · 12 лет назад · 12
OldJim ответил 17 лет назад
O 5 886
61

эта команда должна получить то, что вы ищете:

find / -type d -name httpdocs 

он будет искать в корне вашего сервера каталоги с именем httpdocs или, если вы просто хотите искать в текущем каталоге, замените '/' на '.'

Другая команда, которую вы можете попробовать - найти, что вы сделали бы что-то вроде:

locate httpdocs 

locate httpdocs говорит мне "locate: команда не найдена"

Edward Tanguay · 17 лет назад · 0
Для тех, кто использует команду «locate» (учитывая, что она существует в вашей системе), убедитесь, что база данных, которую она ищет, актуальна; обычно какая-то работа cron заботится об этом. В противном случае, запустите «updatedb» (будучи root). Затем запустите нужныйMsgstr "Это необходимо для поиска недавно добавленных файлов / каталогов.
David Ramirez · 13 лет назад · 4

+1 для локации. Это * намного * быстрее, но только если его индекс обновлен. К счастью, что-то вроде «httpdocs» не будет часто менять местоположение. Если вы планируете многократно искать файлы на компьютере, стоит потратить несколько минут, необходимых для настройки задания updatedb cron.

Doug Harris · 13 лет назад · 0

Также во многих случаях locate выдаст слишком много результатов, так как все 100k файлы в этом каталоге будут отображаться. В этом конкретном случае, если у каждого пользователя есть свои собственные httpdoc с сотнями или тысячами файлов, результат, который хочет OP, вероятно, будет потерян.

Jistanidiot · 12 лет назад · 1

+1 для поиска ... Я постоянно обновляю свою базу данных, поэтому эта команда очень полезна ... Отличная идея.

nicorellius · 11 лет назад · 0

Я никогда не смотрел на это, но updatedb / locate не индексирует все разделы на всех дисках, поэтому он не всегда находит вещи, которые там есть. Если вы хотите (смонтированы) в /, он должен найти его, но если он находится в другом разделе, он, вероятно, не будет.

Joe · 10 лет назад · 0
Zypher ответил 17 лет назад
Z 2 012
26
find / -type d -name httpdocs 2> /dev/null 

Это исключит все сообщения об ошибках, которые вы, вероятно, (прочитайте, всегда) получите, если не будете делать это как пользователь root. Рекомендую сделать это так.

Опция 2> / dev / null очень полезна. В противном случае это может быть трудно увидеть желаемые результаты ...

Gottlieb Notschnabel · 12 лет назад · 2

См. Также [Как я могу исключить все сообщения «в доступе отказано» из «поиска»?](Http://stackoverflow.com/questions/762348/how-can-i-exclude-all-permission-denied-messages-from- находить)

galath · 9 лет назад · 0
user2940456 ответил 12 лет назад
U 361
11

It's important to know the parameter -iname to search "case insensitive" patterns and the use of wildcards: *, ?, etc..

Two examples:

Search all files from /root that contains the string "Linux", case insensitive:

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

Search all directories from /root that contains the string "Linux", case insensitive:

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

Extracted from here:

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

Этот вопрос о том, как найти каталог, имя которого вы знаете, а не о том, как найти каталог, имя которого вы знаете (приблизительно). Кроме того, в принятом ответе (более 6 лет назад!) Уже упоминается -iname как альтернатива -name без учета регистра.

G-Man · 10 лет назад · 0
LunaSeven ответил 10 лет назад
L 111
9

у вас почти есть это. правильный синтаксис будет:

find / -type d -name httpdocs 

Каталог, вероятно, находится под /var/www/

что говорит мне "пути должны предшествовать выражению"

Edward Tanguay · 17 лет назад · 0
chrisbunney ответил 17 лет назад
C 125