Я постоянно использую locate, чтобы найти файлы, имена которых мне известны, локация очень быстрая, и мне это нравится. Для недавно созданных файлов поиск отличный, обычно с недавно созданными файлами я знаю, где они были созданы, поэтому мне не нужно искать всю мою файловую систему.
Когда я забыл, где находится каталог, ни найти, ни найти не кажутся идеальными.
Locate всегда выдает слишком много информации, потому что каждый файл в каталоге также подходит для locate. Например, если бы я искал каталог с именем log где-нибудь в моей файловой системе, журнал locate вернул бы тонны и тонны результатов. Если я сделаю то же самое с find, find / -name log -type d find занимает несколько минут и выдает всевозможные ошибки прав доступа каждый раз, когда сталкивается с папкой, которую не может прочитать.
Есть ли способ лучше?
Ответ: Так что я придерживаюсь grep, пока не найду что-то еще:
locatedir () {
for last; do true; done
if [[ $last == *\/* ]]
then
locate $@ | grep "${last}\$"
else
locate $@ | grep "/${last}\$"
fi
}
locate
имеет собственную встроенную возможность регулярных выражений:-r
или--regex
... для полного диапазона параметров см .: info locate