fynd 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +4 -2
- data/lib/fynd/criteria.rb +2 -2
- data/lib/fynd/tests.rb +13 -13
- data/lib/fynd/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Fynd
|
2
2
|
|
3
|
-
I found GNU find to be slow, so I made it slower.
|
3
|
+
I found GNU find to be slow, so I made it slower by rewriting it in Ruby.
|
4
|
+
|
5
|
+
Fynd is heavily inspired by the, uh... find command, I guess.
|
4
6
|
|
5
7
|
## Is it any good?
|
6
8
|
|
@@ -23,7 +25,7 @@ find("/var/log").iname("system").type(:file).files
|
|
23
25
|
=> ["/var/log/system.log", "/var/log/system.log.0.bz2", "/var/log/system.log.1.bz2", "/var/log/system.log.2.bz2", "/var/log/system.log.3.bz2", "/var/log/system.log.4.bz2", "/var/log/system.log.5.bz2", "/var/log/system.log.6.bz2", "/var/log/system.log.7.bz2"]
|
24
26
|
```
|
25
27
|
|
26
|
-
You can
|
28
|
+
You can even pass the files to a block.
|
27
29
|
|
28
30
|
```ruby
|
29
31
|
require 'fynd'
|
data/lib/fynd/criteria.rb
CHANGED
@@ -22,10 +22,10 @@ module Fynd
|
|
22
22
|
# For every path...
|
23
23
|
paths.each do |path|
|
24
24
|
# Pull out all directories
|
25
|
-
# dirs = Dir.glob(File.expand_path(path)).select { |f| File.
|
25
|
+
# dirs = Dir.glob(File.expand_path(path)).select { |f| File.lstat(f).directory? }
|
26
26
|
# Shove all found files into the collection
|
27
27
|
# @sieve.collection << Dir.glob(File.expand_path(path))
|
28
|
-
@sieve.collection << Find.find(path).to_a
|
28
|
+
@sieve.collection << Find.find(File.expand_path(path)).to_a
|
29
29
|
end
|
30
30
|
|
31
31
|
# Flatten it and strip out non-unique files
|
data/lib/fynd/tests.rb
CHANGED
@@ -18,7 +18,7 @@ module Fynd::Tests
|
|
18
18
|
# effect, the access time of the file it points to is always used.
|
19
19
|
def anewer(other)
|
20
20
|
files.select! do |file|
|
21
|
-
File.
|
21
|
+
File.lstat(file).atime > File.lstat(other).atime
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -32,7 +32,7 @@ module Fynd::Tests
|
|
32
32
|
time = Time.now
|
33
33
|
|
34
34
|
files.select! do |file|
|
35
|
-
atime = File.
|
35
|
+
atime = File.lstat(file).atime
|
36
36
|
|
37
37
|
case comparer
|
38
38
|
when '+'
|
@@ -60,7 +60,7 @@ module Fynd::Tests
|
|
60
60
|
# points to is always used.
|
61
61
|
def cnewer(other)
|
62
62
|
files.select! do |file|
|
63
|
-
File.
|
63
|
+
File.lstat(file).ctime > File.lstat(other).ctime
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
@@ -73,7 +73,7 @@ module Fynd::Tests
|
|
73
73
|
# File is empty and is either a regular file or a directory.
|
74
74
|
def empty
|
75
75
|
files.select! do |file|
|
76
|
-
File.
|
76
|
+
File.lstat(file).zero?
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -89,14 +89,14 @@ module Fynd::Tests
|
|
89
89
|
# File's numeric group ID is n.
|
90
90
|
def gid(n)
|
91
91
|
files.select! do |file|
|
92
|
-
File.
|
92
|
+
File.lstat(file).gid == n.to_i
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
96
|
# File belongs to group gname (numeric group ID allowed).
|
97
97
|
def group(name)
|
98
98
|
files.select! do |file|
|
99
|
-
gid = File.
|
99
|
+
gid = File.lstat(file).gid
|
100
100
|
Etc.getgrgid(gid).name == name
|
101
101
|
end
|
102
102
|
end
|
@@ -124,7 +124,7 @@ module Fynd::Tests
|
|
124
124
|
# -samefile test instead.
|
125
125
|
def inum(n)
|
126
126
|
files.select! do |file|
|
127
|
-
File.
|
127
|
+
File.lstat(file).ino == n.to_i
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -184,7 +184,7 @@ module Fynd::Tests
|
|
184
184
|
# No user corresponds to file's numeric user ID.
|
185
185
|
def nouser
|
186
186
|
files.select! do |file|
|
187
|
-
uid = File.
|
187
|
+
uid = File.lstat(file).uid
|
188
188
|
begin
|
189
189
|
Etc.getpwuid(uid)
|
190
190
|
false
|
@@ -197,7 +197,7 @@ module Fynd::Tests
|
|
197
197
|
# No group corresponds to file's numeric group ID.
|
198
198
|
def nogroup
|
199
199
|
files.select! do |file|
|
200
|
-
gid = File.
|
200
|
+
gid = File.lstat(file).gid
|
201
201
|
begin
|
202
202
|
Etc.getgrgid(gid)
|
203
203
|
false
|
@@ -302,9 +302,9 @@ module Fynd::Tests
|
|
302
302
|
files.select! do |file|
|
303
303
|
case c.to_s
|
304
304
|
when 'f', 'file'
|
305
|
-
File.
|
305
|
+
File.lstat(file).file?
|
306
306
|
when 'd', 'dir', 'directory'
|
307
|
-
File.
|
307
|
+
File.lstat(file).directory?
|
308
308
|
else
|
309
309
|
false
|
310
310
|
end
|
@@ -314,7 +314,7 @@ module Fynd::Tests
|
|
314
314
|
# File's numeric user ID is n.
|
315
315
|
def uid(n)
|
316
316
|
files.select! do |file|
|
317
|
-
File.
|
317
|
+
File.lstat(file).uid == n.to_i
|
318
318
|
end
|
319
319
|
end
|
320
320
|
|
@@ -325,7 +325,7 @@ module Fynd::Tests
|
|
325
325
|
# File is owned by user uname (numeric user ID allowed).
|
326
326
|
def user(name)
|
327
327
|
files.select! do |file|
|
328
|
-
uid = File.
|
328
|
+
uid = File.lstat(file).uid.to_i
|
329
329
|
Etc.getpwuid(uid).name == name
|
330
330
|
end
|
331
331
|
end
|
data/lib/fynd/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fynd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -64,7 +64,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
64
64
|
version: '0'
|
65
65
|
segments:
|
66
66
|
- 0
|
67
|
-
hash:
|
67
|
+
hash: 4151080051906730584
|
68
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
70
70
|
requirements:
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
version: '0'
|
74
74
|
segments:
|
75
75
|
- 0
|
76
|
-
hash:
|
76
|
+
hash: 4151080051906730584
|
77
77
|
requirements: []
|
78
78
|
rubyforge_project:
|
79
79
|
rubygems_version: 1.8.24
|