LinuxForum.Fans
Тема

Работа команды locate

Автор: tamahcki 11 сообщений 1103 просмотров
#305574

Использую команду locate для определения место нахождения файла в системе. Получаю результат

[user@system conf]# locate EUA020720130207154308135
/ccncsi/tqm/process/EUA020720130207154308135
/ccncsi_bkp/tqm/process/EUA020720130207154308135
/home/system/failbox/tq-uc03/EUA020720130207154308135

Захожу в католог и читаю его

[user@system tq-uc03]# ll
total 0

Файла там нету. В других каталогах указаных locate он есть.

Не понимаю данный принцип работы команды locate - почему так?

#305579
"tamahcki" написал:
Файла там нету. В других каталогах указаных locate он есть.

Не понимаю данный принцип работы команды locate - почему так?

Команда locate работает не с файлами, как с таковыми, а с созданным ранее индексом (который должен периодически обновляться!), в котором указано местоположение файлов в системе.
Опять же, в зависимости от настроек, команда locate индексирует не все доступные каталоги.
Для поиска в «реальном» времени следует использовать find — не так быстро, но зато наверняка ;)

#305582
"tamahcki" написал:
Использую команду locate для определения место нахождения файла в системе. Получаю результат

[user@system conf]
text
# locate EUA020720130207154308135
/ccncsi/tqm/process/EUA020720130207154308135
/ccncsi_bkp/tqm/process/EUA020720130207154308135
/home/system/failbox/tq-uc03/EUA020720130207154308135

Насколько я понимаю, первые два пути относятся к виртуальным каталогам, так что ничего удивительного, что ранее проиндексированных файлов там уже нет.

#305583

Да, согласен. Для поиска файла, существует команда find. Но чтобы ей воспользоваться надо знать, либо тип файла, либо имя, либо часть имени, например несколько букв. Вообщем советую почитать ключики к команде find (т.е man find). Позволяет задавать разные параметры поиска и хорошо делает свою работу эта команда. Пример find /home/user/ - name ".*txt" (эта запись означает поиск файлов в домашнем каталоге юзера по расширению txt. а звездочка означает искать все файлы с таким расширением. А если имя знаешь, пиши имя. Пробуй. все получится легко.

#305586
Lupo Alberto написал:
[quote="tamahcki"]Использую команду locate для определения место нахождения файла в системе. Получаю результат

[user@system conf]
text
# locate EUA020720130207154308135
/ccncsi/tqm/process/EUA020720130207154308135
/ccncsi_bkp/tqm/process/EUA020720130207154308135
/home/system/failbox/tq-uc03/EUA020720130207154308135

Насколько я понимаю, первые два пути относятся к виртуальным каталогам, так что ничего удивительного, что ранее проиндексированных файлов там уже нет.[/quote]

В первых друх он есть, в последнем нету. Как можно обновиться индексацию для locate?
Пока не нашел решения.

#305587
tamahcki написал:

В первых друх он есть, в последнем нету. Как можно обновиться индексацию для locate?
Пока не нашел решения.

Нашел - updatedb

#305590
"tamahcki" написал:
Нашел - updatedb

...и добавить, если не добавлено, соответствующее задание в cron ;)
IMHO, искать файлы во временных и виртуальных каталогах с помощью locate неправильно.

#305596
Lupo Alberto написал:
[quote="tamahcki"]Нашел - updatedb

...и добавить, если не добавлено, соответствующее задание в cron ;)
IMHO, искать файлы во временных и виртуальных каталогах с помощью locate неправильно.[/quote]

Когда оправдано использование команды locate?

Shell скрипты при выполнении не используют значения временных и виртуальных катологов? У меня тут как раз один скрипт странно себя ведет, выкидывает ошибку о место положении файла.

#305600
"tamahcki" написал:
Когда оправдано использование команды locate?

Когда время хранения файлов сопоставимо, а лучше больше, времени обновления индекса.
В скриптах, сугубо личное IMHO, лучше использовать find.

#305601
"tamahcki" написал:
Shell скрипты при выполнении не используют значения временных и виртуальных катологов?

Используют, конечно.

#305621

Понял, большое спасибо.

Войдите или зарегистрируйтесь, чтобы ответить.