程序员搜索工具,并行且快速
项目描述
备注
用Python编写
灵感来自ack
并行性:使用Python的multiprocessing库并行搜索目录
通过'import lk'使Python程序搜索变得简单
示例
在当前工作目录中搜索单词'class'
$ lk class /home/elijah/Development/lk/lk.py: 10: class NullDevice(): 54: class SearchManager(object): 85: class ColorWriter: 122: class DirectoryResult(object): 145: class LineResult(object):
在/home/elijah/Development/lk/中搜索正则表达式“line_.*”
$ lk "line_.*" /home/elijah/Development/lk/ /home/elijah/Development/lk/lk.py: 129: self._line_results = {} 134: line_number = file_contents.count('\n', 0, match_start) + 1 139: line_result = LineResult(line_number, left_offset, 142: if not file_name in self._line_results: 143: self._line_results[file_name] = [] 144: self._line_results[file_name].append(line_result) 146: def get_line_results(self): 147: return self._line_results.items() 150: def __init__(self, line_number, left_offset, left_of_group, 152: self.line_number = line_number 160: for file_name, line_results in directory_result.get_line_results(): 164: for line_result in line_results: 165: writer.write('%s: ' % (line_result.line_number)) 166: writer.write(line_result.left_of_group) 167: writer.write_blue(line_result.group) 168: writer.write(line_result.right_of_group+'\n')
安装
$ sudo easy_install lk
或者
$ sudo pip install lk
最新版本安装
如果您想使用lk的最新版本
$ git clone git://github.com/elijahr/lk.git $ cd lk $ sudo chmod +x lk.py $ sudo ln -s `pwd`/lk.py /usr/local/bin/lk
那么每次您想更新到最新版本时,只需这样做
$ cd lk && git pull
用法
usage: lk [-h] [--ignore-case] [--no-unicode] [--no-multiline] [--dot-all] [--follow-links] [--hidden] [--binary] [--no-colors] [--stats] [--num-processes NUMBER_PROCESSES] [--exclude PATH_PATTERN] [--open-with COMMAND] PATTERN [DIRECTORY] A programmer's search tool, parallel and fast positional arguments: PATTERN a python re regular expression DIRECTORY a directory to search in (default cwd) optional arguments: -h, --help show this help message and exit --ignore-case, -i ignore case when searching --no-unicode, -u unicode-unfriendly searching --no-multiline, -l don't search over multiple lines --dot-all, -a dot in pattern matches newline --follow-links, -s follow symlinks --hidden, -n search hidden files and directories --binary, -b search binary files --no-colors, -c don't print ANSI colors --stats, -t print statistics --num-processes NUMBER_PROCESSES, -p NUMBER_PROCESSES number of child processes to concurrently search with --exclude PATH_PATTERN, -x PATH_PATTERN exclude paths matching PATH_PATTERN --open-with COMMAND, -o COMMAND run each COMMAND where COMMAND is a string with a placeholder, %s, for the absolute path of the matched file
有问题?
请在此http://github.com/elijahr/lk/issues报告任何遇到的错误