Я пытаюсь найти файл с помощью команд find и locate.
locate
command быстрее, но требует обновления slocate
базы данных. А find
command медленнее, но не требует никаких обновлений.
Я пытаюсь использовать своего рода 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