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

**URL:** <https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459>\
**Category:** Ruby\
**Created:** [November 17, 2008, 3:25pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459 "2008-11-17T15:25:39Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 17, 2008, 3:25pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/1 "2008-11-17T15:25:39Z")

</div>

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](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](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,

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 17, 2008, 4:24pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/2 "2008-11-17T16:24:27Z")

</div>

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](http://twitter.com/bil_kleb)

regards,

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 17, 2008, 7:35pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/3 "2008-11-17T19:35:54Z")

</div>

Hi,

Rolando A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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,

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 17, 2008, 7:44pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/4 "2008-11-17T19:44:43Z")

</div>

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](http://twitter.com/bil_kleb)

regards,

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 17, 2008, 7:44pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/5 "2008-11-17T19:44:07Z")

</div>

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=22854&group_id=735&atid=2912)  
[http://rubyforge.org/tracker/index.php?func=detail&aid=22855&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

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 17, 2008, 8:00pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/6 "2008-11-17T20:00:34Z")

</div>

Hi,

Daniel B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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](http://rubyforge.org/tracker/?atid=2912&group_id=735)]

Excellent; thanks.

Regards,

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 18, 2008, 12:51am UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/7 "2008-11-18T00:51:53Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [November 19, 2008, 6:32pm UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/8 "2008-11-19T18:32:42Z")

</div>

Hi,

On Nov 17, 11:56 am, Bil K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [December 11, 2008, 12:34am UTC](https://www.ruby-forum.com/t/ruby-equivalent-to-find-perm-g-rw-ls/153459/9 "2008-12-11T00:34:20Z")

</div>

On Nov 17, 7:21 am, Bil K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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
