gren (grep next)

ongaeshi.github.com/gren

DESCRIPTION:

gren is a next grep tool.

CONCEPT:

  • The basis is find+grep.

  • The item that the user specifies to the minimum

    • The binary or the text or the tool judges it from the automatic operation.

  • Convenient retrieval result

INSTALL:

gem install gren

USAGE:

gren [option] pattern [dir]
    -i, --ignore                     Ignore case.
    -l, --listing                    The searched file name is displayed.
    -f, --file-regexp REGEXP         Search file regexp. (default: ".")
        --if, --ignore-file REGEXP   Ignore file pattern.
        --id, --ignore-dir REGEXP    Ignore dir pattern.

SAMPLE:

“FileTest” is retrieved below the present directory.

% gren FileTest
pkg/gren-0.0.5/lib/gren/findgrep.rb:34:        next unless FileTest.file?(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:39:        unless FileTest.readable?(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:44:        @result.size += FileTest.size(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:53:        @result.search_size += FileTest.size(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:95:      FileTest.directory?(fpath) &&
pkg/gren-0.0.4/lib/gren/findgrep.rb:34:        next unless FileTest.file?(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:39:        unless FileTest.readable?(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:44:        @result.size += FileTest.size(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:53:        @result.search_size += FileTest.size(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:95:      FileTest.directory?(fpath) &&
lib/gren/findgrep.rb:34:        next unless FileTest.file?(fpath)
lib/gren/findgrep.rb:39:        unless FileTest.readable?(fpath)
lib/gren/findgrep.rb:44:        @result.size += FileTest.size(fpath)
lib/gren/findgrep.rb:53:        @result.search_size += FileTest.size(fpath)
lib/gren/findgrep.rb:95:      FileTest.directory?(fpath) &&

dir   : /Users/ongaeshi/Documents/gren (0.01sec)
files : 49 in 53 (35.63KB in 61.53KB)
match : 3 files, 15 hit

“FileTest” is retrieved below the directory pkg/

% gren FileTest pkg/
pkg/gren-0.0.5/lib/gren/findgrep.rb:34:        next unless FileTest.file?(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:39:        unless FileTest.readable?(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:44:        @result.size += FileTest.size(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:53:        @result.search_size += FileTest.size(fpath)
pkg/gren-0.0.5/lib/gren/findgrep.rb:95:      FileTest.directory?(fpath) &&
pkg/gren-0.0.4/lib/gren/findgrep.rb:34:        next unless FileTest.file?(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:39:        unless FileTest.readable?(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:44:        @result.size += FileTest.size(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:53:        @result.search_size += FileTest.size(fpath)
pkg/gren-0.0.4/lib/gren/findgrep.rb:95:      FileTest.directory?(fpath) &&

dir   : /Users/ongaeshi/Documents/gren/pkg (0.01sec)
files : 32 in 36 (22.64KB in 48.54KB)
match : 2 files, 10 hit

Below the directory pkg/. It limits to the rb file and “FILE” is retrieved, that is, (file: 32 in 36 → file: 14 It is paid attention that it is in 36. )

% gren FILE -f "\.rb$"
pkg/gren-0.0.5/test/test_helper.rb:3:require File.dirname(__FILE__) + '/../lib/gren'
.
.
.
pkg/gren-0.0.4/lib/gren/cli.rb:3:require File.join(File.dirname(__FILE__), 'findgrep')

dir   : /Users/ongaeshi/Documents/gren/pkg (0.1sec)
files : 14 in 36 (15.36KB in 48.54KB)
match : 12 files, 18 hit

–id ignore directory

% gren FILE -f "\.rb$" --id pkg
test/test_helper.rb:3:require File.dirname(__FILE__) + '/../lib/gren'
test/test_gren_cli.rb:1:require File.join(File.dirname(__FILE__), "test_helper.rb")
test/test_gren.rb:1:require File.dirname(__FILE__) + '/test_helper.rb'
lib/gren.rb:1:$:.unshift(File.dirname(__FILE__)) unless
lib/gren.rb:2:  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
lib/gren/findgrep.rb:3:require File.join(File.dirname(__FILE__), 'result')
lib/gren/findgrep.rb:7:    IGNORE_FILE = /(\A#.*#\Z)|(~\Z)|(\A\.#)/
lib/gren/findgrep.rb:103:      IGNORE_FILE.match(File.basename(fpath)) ||
lib/gren/cli.rb:3:require File.join(File.dirname(__FILE__), 'findgrep')

dir   : /Users/ongaeshi/Documents/gren (0.01sec)
files : 7 in 17 (7.68KB in 11.32KB)
match : 6 files, 9 hit

–if ignore files

% gren FILE -f "\.rb$" --id pkg --if "test_.+\.rb$"
lib/gren.rb:1:$:.unshift(File.dirname(__FILE__)) unless
lib/gren.rb:2:  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
lib/gren/findgrep.rb:3:require File.join(File.dirname(__FILE__), 'result')
lib/gren/findgrep.rb:7:    IGNORE_FILE = /(\A#.*#\Z)|(~\Z)|(\A\.#)/
lib/gren/findgrep.rb:103:      IGNORE_FILE.match(File.basename(fpath)) ||
lib/gren/cli.rb:3:require File.join(File.dirname(__FILE__), 'findgrep')

dir   : /Users/ongaeshi/Documents/gren (0.0sec)
files : 4 in 17 (7.07KB in 11.32KB)
match : 3 files, 6 hit

-i ignore case

% gren FILE -i -f "\.rb$" --id pkg --if "test_.+\.rb$"
lib/gren.rb:1:$:.unshift(File.dirname(__FILE__)) unless
lib/gren.rb:2:  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
lib/gren/result.rb:8:    attr_accessor :match_file_count
.
.
.
lib/gren/cli.rb:16:      opt.on('--if REGEXP', '--ignore-file REGEXP', 'Ignore file pattern.') {|v| option.ignoreFile = v}

dir   : /Users/ongaeshi/Documents/gren (0.1sec)
files : 4 in 17 (7.07KB in 11.32KB)
match : 4 files, 53 hit

-l listing mode.

% gren FILE -l
test/test_helper.rb:3:require File.dirname(__FILE__) + '/../lib/gren'
.
.

--- search --------
test/test_helper.rb
test/test_gren_cli.rb
.
.
total: 49

--- match --------
test/test_helper.rb
test/test_gren_cli.rb
.
.
total: 30

--- ignore-file --------
pkg/gren-0.0.5.tgz
pkg/gren-0.0.5.gem
.
.
total: 4

--- ignore-dir --------
.git
total: 1

--- unreadable --------
total: 0

dir   : /Users/ongaeshi/Documents/gren (0.01sec)
files : 49 in 53 (33.96KB in 59.86KB)
match : 30 files, 42 hit

The extra: It ego searches by my home directory

% cd ~
% gren ongaeshi
.
.
.

dir   : /Users/ongaeshi (8m 52.45s)
files : 70237 in 153566 (713.45MB in 91.92GB)
match : 44 files, 162 hit

for Emacs:

for OSX

(global-set-key "\C-x\C-g" 'grep-find) ; your favarite key
(setq grep-find-command "gren ")

for Windows

(global-set-key "\C-x\C-g" 'grep-find) ; your favarite key
(setq grep-find-command "gren.bat ")

LICENSE:

MIT License