README
¶
fnd
======
.. image:: https://secure.travis-ci.org/humanfromearth/fnd.png?branch=master
A golang implementation of the popular find unix utility.
The main reason I coded this is because I find myself writing this a lot::
find -iname "*x*"
Instead I want to write::
fnd x
That's the whole philosophy really.
.. note: This is not a 1:1 implementation of find and I don't plan to make one.
Install
---------
::
go get -u github.com/humanfromearth/fnd
Example
---------------------------------
fnd <pattern> <path>
::
$ ls .
dir1
$ fnd # just list the directory
./dir1
$ touch dir1/y; touch ./dir1/2; touch ./dir1/x2 #create a few example files
$ fnd y
./dir1/y
$ fnd 2 # matches *2*
./dir1/2
./dir1/x2
$ mkdir -p dir2/y
$ fnd y ./dir1 # search just in ./dir1
./dir1/y
Regexp example
------------------
fnd -e <regexp> <path>
::
$ fnd -e x$ # ends with x
$ fnd -e ^x # starts with x
./dir1/x2
$ fnd -e y$ ./dir2 #search regexp in a directory
./dir2/y
Development
-------------
If you want to play with it
Testing
++++++++++
::
$ go test -v
=== RUN TestUnixRegexp
--- PASS: TestUnixRegexp (0.00 seconds)
=== RUN TestFindSimple
--- PASS: TestFindSimple (0.00 seconds)
=== RUN TestFindLevels
--- PASS: TestFindLevels (0.05 seconds)
=== RUN TestFindUnixPatternQue
--- PASS: TestFindUnixPatternQue (0.00 seconds)
=== RUN TestFindUnixPatternStar
--- PASS: TestFindUnixPatternStar (0.00 seconds)
=== RUN TestFindRegexp
--- PASS: TestFindRegexp (0.00 seconds)
=== RUN TestFindCaseSensitive
--- PASS: TestFindCaseSensitive (0.00 seconds)
=== RUN TestFindFileType
--- PASS: TestFindFileType (0.05 seconds)
=== RUN TestFindFileTypeSymLink
--- PASS: TestFindFileTypeSymLink (0.00 seconds)
PASS
ok fnd 0.110s
Benchmarking
------------------------
::
$ go test -c # this creates fnd.test. This step is required in order to use it with the profiler.
$ ./fnd.test -test.bench="." -test.cpuprofile="fnd_cpu.prof" -test.memprofile="fnd_mem.prof"
PASS
BenchmarkFind 50000 36418 ns/op
$ go tool pprof fnd.test fnd_cpu.prof
Welcome to pprof! For help, type 'help'.
(pprof) top10
Total: 93 samples
32 34.4% 34.4% 42 45.2% runtime.FixAlloc_Free
29 31.2% 65.6% 93 100.0% fmt.Fprintln
6 6.5% 72.0% 19 20.4% runtime.MHeap_Alloc
5 5.4% 77.4% 12 12.9% path/filepath.Clean
3 3.2% 80.6% 9 9.7% runtime.MCache_Free
3 3.2% 83.9% 6 6.5% runtime.MCentral_FreeList
2 2.2% 86.0% 2 2.2% fmt.(*fmt).pad
2 2.2% 88.2% 22 23.7% runtime.MGetSizeClassInfo
2 2.2% 90.3% 9 9.7% runtime.isNaN
1 1.1% 91.4% 1 1.1% flag.(*FlagSet).Parse
Possible features to come:
---------------------------------
* match terminal highlighting
* date search
* optional depth
* conditionals like: -or -and
* configuration file.
Documentation
¶
There is no documentation for this package.
Click to show internal directories.
Click to hide internal directories.