Показать статистику
0 голосов
от (2.5тыс. баллов)

Я пытаюсь найти все копии example.filename на моем сервере FreeBSD. Какой самый лучший и самый простой эффективный способ сделать это?

1.3тыс. просмотров 2 ответов

2 Ответы

0 голосов
от (26.4тыс. баллов)

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

find / -name example.filename

Возможно немного быстрее, чем  вариант с find сделать таким образом:

locate filename

В том случае, если вы используете службу locate, и она находит только файлы, которые существовали в updatedb последний раз . Можно запустить updatedb вручную, но это слишком долго.

Если у вас установлен locate, то можно сделать и так:

locate example.filename

Это, конечно, не всегда актуально, поскольку locate каждый вечер запускает задание cron, которое переиндексирует все файлы на вашем компьютере.

Для поиска файлов  на определенном уровне каталога можно воспользоваться:

ls /data/*/example.filename

0 голосов
от (4.5тыс. баллов)

Для поиска всех копий файла с именем `example.filename` на вашем сервере FreeBSD, вы можете использовать команду `find`. Это мощный и гибкий инструмент для поиска файлов и каталогов, основанный на различных критериях.

Чтобы найти все копии файла `example.filename`, начиная с корневого каталога `/`, выполните следующую команду: 

find / -type f -name "example.filename" 2>/dev/null

- `find` - это сама команда поиска.
- `/` - это корневой каталог, с которого начинается поиск.
- `-type f` - это условие, указывающее, что искать нужно только файлы.
- `-name "example.filename"` - это условие, указывающее, что имя файла должно точно соответствовать строке `example.filename`.
- `2>/dev/null` - это перенаправление ошибок в специальный файл `/dev/null`, чтобы предотвратить вывод сообщений об ошибках доступа к защищенным каталогам или файлам.

Эта команда найдет все копии файла с именем `example.filename` и выведет их полные пути в терминал. Обратите внимание, что выполнение этой команды может занять некоторое время, особенно если ваш сервер имеет большое количество файлов и каталогов.

Вы также можете использовать команду `locate` для поиска файла без использования `find`. Однако, перед использованием `locate`, убедитесь, что у вас установлен пакет `mlocate` и база данных `locate` обновлена.

Для установки пакета `mlocate` и обновления базы данных, выполните следующие команды: 

pkg install mlocate
/usr/libexec/locate.updatedb

Теперь вы можете использовать `locate` для поиска файла с именем `example.filename`: 

locate "example.filename"

Обратите внимание, что `locate` использует базу данных для быстрого поиска файлов, но это также означает, что только файлы, присутствующие в базе данных на момент последнего обновления, будут найдены. Если файл был создан или перемещен после последнего обновления базы данных, он не будет найден с помощью `locate`. В этом случае вы все равно должны использовать команду `find`.

Вы можете использовать команду `grep` в сочетании с командой `ls` для рекурсивного поиска файла с именем `example.filename`:

ls -R /path/to/start/directory | grep 'example.filename'

Здесь `/path/to/start/directory` - это путь к каталогу, с которого вы хотите начать поиск. Замените его на соответствующий путь в вашем случае. Обратите внимание, что этот метод менее эффективен и может быть медленнее, чем использование `find` или `locate`.

Еще один вариант - использовать команду `du` (Disk Usage) совместно с `grep`:

du -a /path/to/start/directory | grep 'example.filename'

Этот метод также менее эффективен и может быть медленнее, чем использование `find` или `locate`.

...