【发布时间】:2013-12-09 14:25:57
【问题描述】:
模糊搜索目录名称的最佳/合适算法是什么?我想实现一个 bash 补全,它使用模糊搜索来完成目录/文件名,但似乎该算法取决于要匹配的字符串集。
【问题讨论】:
-
那么你的字符串集是什么?您希望搜索多少个目录?等等等等。你对约束了解多少?
-
@IvanVergiliev 我要补全当前目录下的所有文件。
模糊搜索目录名称的最佳/合适算法是什么?我想实现一个 bash 补全,它使用模糊搜索来完成目录/文件名,但似乎该算法取决于要匹配的字符串集。
【问题讨论】:
嗯……这是一个有趣的提议。我会这样做:
首先,解析文件路径,得到最后一个斜杠后的文字
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
但是,请注意 =~ 是一个仅限 bash 的运算符。
【讨论】: