Як знайти каталог на Linux?


453

У мене VPS з Suse Linux 10.3 .

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

Оскільки я завантажую через FTP в каталог, який називається httpdocs , я припускаю, що цей каталог десь існує.

Мій пошук у Google навчив мене це робити, перейдіть до мого кореневого каталогу та введіть:

find httpdocs -type d

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

Як я можу знайти цей каталог?


4
Якщо хтось задається питанням, команда у питанні знаходить усі каталоги ( -type d) у записі каталогів httpdocs(щодо поточного робочого каталогу, як правило, але не обов'язково - каталогу). Це не вдається з повідомленням про помилку, оскільки httpdocsв кореневому каталозі системи немає запису до каталогу, а отже, немає початкової точки пошуку.
Даніель Бек

Відповіді:


609

Це є:

find / -type d -name 'httpdocs'

перший параметр "/" - це куди шукати, в цьому випадку "/" це вся система.

-name може бути -інім ігнорувати регістр

також -тип не є обов'язковим

використання: людина знайде більше варіантів


2
find / -name 'httpdocs' відмінно дякує
Edward Tanguay

91
Це може не мати значення для простих пошуків, але для складніших команд пошуку варто відзначити, що речі оцінюються в тому порядку, в якому вони знаходяться в командному рядку. Отже, вам може знадобитися мати -тип d (лише каталоги) перед -іменем, щоб прискорити роботу. Знову ж таки, це може не мати великого значення, але при вступі у складніші пошуки це може значно підвищити швидкість пошуку.
Домінік Ейдсон

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

24
Якщо ви збираєтеся виконувати знаходження у всій файловій системі, особливо на сервері, тоді це зазвичай добре використовувати, niceщоб знахідка не nice find / ...
забирала

16
Я додав би 2> / dev / null, щоб уникнути сховання моїх результатів пошуку в усіх помилках дозволу.
Джейсон Йео

63

ця команда повинна отримати вам те, що ви шукаєте:

find / -type d -name httpdocs

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

Ще одна команда, яку ви можете спробувати, - знайти, ви б зробили щось на кшталт:

locate httpdocs

locate httpdocs каже мені "locate: команда не знайдена"
Edward Tanguay

4
Для тих, хто використовує команду "Знайти" (враховуючи, що вона існує у вашій системі), переконайтесь, що та база даних, яку вона шукає, є актуальною; як правило, якась робота з крон береться за це. В іншому випадку запустіть "updatedb" (будучи root). Потім запустіть потрібне "locate <somefile>". Це необхідно для пошуку нещодавно доданих файлів / dirs.
Девід Рамірес

+1 для пошуку. Це набагато швидше, але лише в тому випадку, якщо його індекс актуальний. На щастя, щось на зразок "httpdocs" не змінюватиме місце розташування часто. Якщо ви плануєте багаторазово шукати файли на машині, варто налаштувати кілька хвилин, необхідних для налаштування оновленого завдання cron.
Doug Harris

1
Крім того, у багатьох випадках, locate поверне занадто багато результатів, оскільки всі 100k файли в цьому каталозі з'являться. У цьому конкретному випадку, якщо кожен користувач має свій власний httpdocs із 100-ти або 1000-ти файлами, результат, який бажає ОП, ймовірно буде втрачений.
Jistanidiot

+1 для пошуку ... Я постійно оновлюю свою базу даних, тому ця команда дуже корисна ... Відмінна ідея.
nicorellius

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

Це дозволить усунути всі повідомлення про помилки, які ви, ймовірно, (читайте, завжди), отримуючи, якщо цього не зробите як користувач root. Рекомендую зробити так.


2
2> /dev/nullОпція дуже корисна. Інакше може бути важко побачити бажані результати ...
Gottlieb Notschnabel


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


Це питання стосується того, як знайти каталог, чиє ім’я ви знаєте, а не як знайти каталог, прізвище якого ви знаєте (приблизно). Крім того, прийнята відповідь (понад 6 років тому!) Вже згадується -inameяк невідчутна для випадку альтернатива -name.
G-Man

9

у вас це майже є. правильним буде синтаксис:

find / -type d -name httpdocs

Каталог, ймовірно, під /var/www/


що говорить мені, що "шляхи повинні передувати вираженню"
Едвард Тангуай
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.