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

Discussion in 'Ruby' started by Bil Kleb, Nov 17, 2008.

  1. Bil Kleb

    Bil Kleb Guest

    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?

    Thanks,
    --
    http://twitter.com/bil_kleb
    Bil Kleb, Nov 17, 2008
    #1
    1. Advertising

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

    > 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 }


    > Thanks,
    > --
    > http://twitter.com/bil_kleb



    regards,
    --
    Rolando Abarca M.
    Rolando Abarca, Nov 17, 2008
    #2
    1. Advertising

  3. Bil Kleb

    Bil Kleb Guest

    Hi,

    Rolando Abarca <> 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,
    --
    http://twitter.com/bil_kleb
    Bil Kleb, Nov 17, 2008
    #3
  4. Bil Kleb wrote:
    > 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
    Daniel Berger, Nov 17, 2008
    #4
  5. On Nov 17, 2008, at 3:31 PM, Bil Kleb 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,
    --
    Rolando Abarca M.
    Rolando Abarca, Nov 17, 2008
    #5
  6. Bil Kleb

    Bil Kleb Guest

    Bil Kleb, Nov 17, 2008
    #6
  7. Bil Kleb wrote:
    > Hi,
    >
    > Daniel Berger <> wrote:
    >> Bil Kleb 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.


    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
    Daniel Berger, Nov 17, 2008
    #7
  8. Hi,

    On Nov 17, 11:56 am, Bil Kleb <> wrote:
    > Hi,
    >
    > Daniel Berger <> wrote:
    > > BilKlebwrote:
    > > > [..] 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.


    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
    Daniel Berger, Nov 19, 2008
    #8
  9. On Nov 17, 7:21=A0am, Bil Kleb <> wrote:
    > 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
    Daniel Berger, Dec 10, 2008
    #9
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Howard
    Replies:
    1
    Views:
    1,166
  2. OMNI GROUP

    ASP.NET/ PERM/ FL

    OMNI GROUP, Jan 18, 2006, in forum: ASP .Net
    Replies:
    0
    Views:
    510
    OMNI GROUP
    Jan 18, 2006
  3. Kforce - Columbus, OH
    Replies:
    3
    Views:
    416
    Benji
    Dec 14, 2005
  4. Replies:
    0
    Views:
    370
  5. Bill Seitz

    NYC fulltime/perm Zope/Python job

    Bill Seitz, Nov 13, 2003, in forum: Python
    Replies:
    0
    Views:
    455
    Bill Seitz
    Nov 13, 2003
Loading...

Share This Page