Поиск файла в системе unix

Поиск файла в системе unix

Я пытаюсь найти файл с помощью команд find и locate.

locatecommand быстрее, но требует обновления slocateбазы данных. А findcommand медленнее, но не требует никаких обновлений.

Я пытаюсь использовать своего рода prdсистемы.

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

решение1

Учитывая, что файлы находятся в нескольких подкаталогах, вложенных не более чем в два-три уровня, вы можете использовать (возможно) более быструю команду, например:

(cd /path/to/directory; ls *.txt */*.txt */*/*.txt)

Поскольку вам каким-то образом удалось ответить на свой собственный вопрос, используйте updatedbно сускорение поиска, нравиться:

$ updatedb -o /home/rahul/my.db -U /home/rahul/ -e "not/in/this/directory1 not/in/this/directory2"
$ locate -d /home/rahul/my.db            ### point locate to use your db

видетьобновленныйb manза помощь в этом вопросе.


Согласно предложению @cas, в качестве альтернативы перенаправьте вывод findв файл и запустите grepего повторно. Простой текст занимает больше места, чем updatedbбаза данных, но поиск в нем выполняется гораздо быстрее.

Например:

find /path/to/directory > /tmp/files.list
grep -i file.xml /tmp/files.list
grep -i anotherfile.xml /tmp/files.list

Связанный контент