跳转到主要内容

程序员搜索工具,并行且快速

项目描述

备注

  • 用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报告任何遇到的错误

项目详情


由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面