Ruby equivalent to `find . -perm -g+rw -ls`

B

Bil Kleb

R

Rolando Abarca

Hi,

I can't find a Ruby equivalent to

find . -perm -g+rw -ls

Currently, it looks like I'll need to combine,

File.stat(file).mode

with something like Hal Fulton's sym2oct,

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/96956

hacked into Daniel Berger's file-find gem,

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248981

and require 'etc' to pull out the user and group names instead of uids
and gids?

Is there an alternative to all this yak shaving?

maybe something like this?

rolando:test_perm rolando$ ls -l
total 8
-rw-rw-r-- 1 rolando staff 0 Nov 17 12:12 1
-rw-r--r-- 1 rolando staff 0 Nov 17 12:13 2
-rw-r--r-- 1 rolando staff 77 Nov 17 12:21 perm.rb

rolando:test_perm rolando$ find . -perm -g+rw -ls
1510804 0 -rw-rw-r-- 1 rolando staff 0 Nov 17
12:12 ./1

rolando:test_perm rolando$ ruby perm.rb
["./1"]
rolando:test_perm rolando$ cat perm.rb
# NOTE: 060 == g+rw
p Dir["./**/*"].select { |f| File.stat(f).mode & 060 == 060 ? true :
nil }



regards,
 
B

Bil Kleb

Hi,

Rolando Abarca said:
maybe something like this?
[..]
rolando:test_perm rolando$ cat perm.rb
# NOTE: 060 == g+rw

This is what I'm reduced to doing now. It just feels wrong
for me to have to resort to octal -- it's not at the
correct abstraction level as evidenced by your comment.
p Dir["./**/*"].select {
|f| File.stat(f).mode & 060 == 060 ? true : nil }

You don't need the '? true : nil' part AFAICT -- the
first conditional satisfies select.

Regards,
 
D

Daniel Berger

Bil said:
Hi,

I can't find a Ruby equivalent to

find . -perm -g+rw -ls

Currently, it looks like I'll need to combine,

File.stat(file).mode

with something like Hal Fulton's sym2oct,

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/96956

hacked into Daniel Berger's file-find gem,

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248981

and require 'etc' to pull out the user and group names instead of uids
and gids?

Is there an alternative to all this yak shaving?

Not at the moment, but both are excellent ideas. I've submitted them myself at:

http://rubyforge.org/tracker/index.php?func=detail&aid=22854&group_id=735&atid=2912
http://rubyforge.org/tracker/index.php?func=detail&aid=22855&group_id=735&atid=2912

Supporting strings for users and groups is trivial. Supporting symbolic
permissions will be more of a hassle.

Regards,

Dan
 
D

Daniel Berger

Bil said:
Hi,

Daniel Berger said:
Bil said:
[..] Is there an alternative to all this yak shaving?
Not at the moment, but both are excellent ideas.
I've submitted them myself at:

[http://rubyforge.org/tracker/?atid=2912&group_id=735]

Excellent; thanks.

I've already tested and committed the changes for the :user and :group changes.
They'll be part of release 0.2.2. I should have a release out this week.

I'll save the :perm changes for 0.2.3 after I've had the chance to review some
of the code I've seen online.

Regards,

Dan
 
D

Daniel Berger

D

Daniel Berger

Hi,

I can't find a Ruby equivalent to

=A0 find . -perm -g+rw -ls

Currently, it looks like I'll need to combine,

=A0 File.stat(file).mode

with something like Hal Fulton's sym2oct,

=A0http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/96956

hacked into Daniel Berger'sfile-findgem,

=A0http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/248981

and require 'etc' to pull out the user and group names instead of uids
and gids?

Is there an alternative to all this yak shaving?

I just released file-find 0.2.4 which now does all your yak shaving
for you, i.e. it now supports symbolic permissions, too.

Regards,

Dan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,149
Members
46,695
Latest member
StanleyDri

Latest Threads

Top