2013-12-09 3 views
3

Какой был бы лучший/подходящий алгоритм для имен каталога нечеткого поиска? Я хотел бы реализовать завершение bash, которое завершает имена каталогов/файлов с использованием нечеткого поиска, но кажется, что алгоритм зависит от набора строк для соответствия.Лучший алгоритм поиска нечетких имен каталога поиска

+0

Итак, какой у вас набор строк? Сколько каталогов вы планируете искать? д. и т. д. I.e. что вы знаете об ограничениях? –

+0

@IvanVergiliev Я хочу завершить все файлы в текущем каталоге. – helpermethod

ответ

1

Хм ... это интересное предложение. Я хотел бы сделать это что-то вроде этого:

Во-первых, разобрать путь к файлу, чтобы получить текст после последнего слеша

IFS='/' read -a filepath <<< '$string' 
dirname=${filepath[${#filepath[@] - 1]} 

Далее используйте find, чтобы получить все непосредственные подкаталоги каталоги в текущем пути и добавить их к варианту завершения bash. Вы можете использовать оператор =~ вместо нечеткого поиска, как описано in this answer

for i in 'find . -type d -maxdepth 1'; do 
    if [[ i =~ $dirname ]]; then 
    //add to bash completion option, unsure how to do this part 
    fi 
done 

Однако, обратите внимание, что =~ является Баш-единственный оператор.

Смежные вопросы