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

454

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

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

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

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

find httpdocs -type d

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

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

Эдвард Тангей
источник
4
В случае, если кому-то интересно, команда в вопросе находит все каталоги ( -type d) в записи каталога httpdocs(относительно текущего рабочего каталога, обычно, но не обязательно, каталога). Сбой с сообщением об ошибке, поскольку httpdocsв корневом каталоге системы нет записи каталога и, следовательно, нет начальной точки для поиска.
Даниэль Бек

Ответы:

610

Это:

find / -type d -name 'httpdocs'

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

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

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

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

OldJim
источник
2
find / -name 'httpdocs' отлично работает
Эдвард Тангей
91
Это может не иметь значения для простых поисков, но для более сложных команд поиска стоит отметить, что все оценивается в том порядке, в котором они находятся в командной строке. Итак, вы можете захотеть иметь -type d (только для каталогов) перед -name, чтобы ускорить процесс. Опять же, здесь это может не иметь большого значения, но при более сложных поисках это может значительно повысить скорость поиска.
Доминик Эйдсон
14
На самом деле этот -nameтест выполняется быстрее, чем большинство других тестов, поскольку -nameсопоставляется со списком каталогов, который уже загружен с диска, а другие тесты должны выполнить a stat(2)для получения информации о файле. После первого stat()вызова для файлов, без последующих тестов получают из памяти, например: -type f -mtime -10.
Arcege
24
Если вы собираетесь выполнить поиск во всей файловой системе, особенно на сервере, то обычно это полезно, niceчтобы поиск не занимал слишком много ресурсов у более важных процессов:nice find / ...
Arcege
16
Я бы добавил 2> / dev / null, чтобы избежать скрытия моих результатов поиска во всех ошибках разрешения.
Джейсон Йео
62

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

find / -type d -name httpdocs

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

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

locate httpdocs
Zypher
источник
locate httpdocs говорит мне "locate: команда не найдена"
Эдвард Тангей
4
Для тех, кто использует команду «locate» (учитывая, что она существует в вашей системе), убедитесь, что база данных, которую она ищет, актуальна; обычно какая-то работа cron заботится об этом. В противном случае, запустите «updatedb» (будучи root). Затем запустите необходимое «locate <somefile>». Это необходимо для поиска недавно добавленных файлов / каталогов.
Дэвид Рамирес
+1 для локации. Это намного быстрее, но только если его индекс обновлен. К счастью, что-то вроде «httpdocs» не будет часто менять местоположение. Если вы планируете многократно искать файлы на компьютере, стоит потратить несколько минут, необходимых для настройки задания updatedb cron.
Даг Харрис
1
Также во многих случаях locate выдаст слишком много результатов, так как все 100k файлы в этом каталоге будут отображаться. В этом конкретном случае, если у каждого пользователя есть свои собственные httpdoc с сотнями или тысячами файлов, результат, который хочет OP, вероятно, будет потерян.
Джистанидиот
+1 для поиска ... Я постоянно обновляю свою базу данных, поэтому эта команда очень полезна ... Отличная идея.
nicorellius
27
find / -type d -name httpdocs 2> /dev/null

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

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

Важно знать параметр -iname для поиска шаблонов без учета регистра и использования подстановочных знаков: *,? И т. Д.

Два примера:

Поиск всех файлов из / root, который содержит строку «Linux», без учета регистра:

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

Поиск всех каталогов из / root, который содержит строку "Linux", без учета регистра:

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

Извлечено отсюда:

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

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

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

find / -type d -name httpdocs

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

chrisbunney
источник
который говорит мне «пути должны предшествовать выражению»
Эдвард Тангей