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

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 F.'s sym2oct,

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

hacked into Daniel B.'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?

Thanks,

On Nov 17, 2008, at 11:21 AM, Bil K. wrote:

with something like Hal F.'s sym2oct,
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 }

Thanks,

http://twitter.com/bil_kleb

regards,

Hi,

Rolando A. [email protected] wrote:

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,

On Nov 17, 2008, at 3:31 PM, Bil K. wrote:

You don’t need the ‘? true : nil’ part AFAICT – the
first conditional satisfies select.

that’s correct.

Regards,

http://twitter.com/bil_kleb

regards,

Bil K. wrote:

with something like Hal F.'s sym2oct,
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

Hi,

Daniel B. [email protected] wrote:

Bil K. wrote:

[…] 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.

Regards,

Bil K. wrote:

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

Hi,

On Nov 17, 11:56 am, Bil K. [email protected] wrote:

Excellent; thanks.

file-find 0.2.2 has been released, which now supports names as well as
id’s for the :name and :group options (on Unix, anyway).

Regards,

Dan

On Nov 17, 7:21 am, Bil K. [email protected] wrote:

with something like Hal F.'s sym2oct,
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