# Stable find.rb

**URL:** <https://www.ruby-forum.com/t/stable-find-rb/179878>\
**Category:** Development\
**Created:** [December 6, 2009, 3:48pm UTC](https://www.ruby-forum.com/t/stable-find-rb/179878 "2009-12-06T15:48:19Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 6, 2009, 3:48pm UTC](https://www.ruby-forum.com/t/stable-find-rb/179878/1 "2009-12-06T15:48:19Z")

</div>

ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å†å¸°çš„ã«ãŸã©ã£ãŸçµæžœã‚’æ¯”è¼ƒã™ã‚‹ã“ã¨ãŒã‚ã£ãŸã®ã§ã™ãŒã€  
find.rb ã‚’ä½¿ã†ã¨ã€yield ã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«åã®é †åºãŒ readdir ã®æŒ™å‹•ã«ä¾å­˜ã—ã¦  
ä¸å®šãªãŸã‚ã«ä½¿ãˆãªãã¦æ®‹å¿µãªæ€ã„ã‚’ã—ã¾ã—ãŸã€‚

readdir ãŒè¿”ã™é †ã« yield ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„ã¨ã„ã†ç†ç”±ã¯ãªã„ã¨æ€ã†ã®ã§ã€  
ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ sort ã—ã¦ã‚„ã‚‹ã¨ã„ã†ã®ã¯ã©ã†ã§ã—ã‚‡ã†?

# % svn diff --diff-cmd diff -x ‘-u --ignore-all-space’ lib/find.rb Index: lib/find.rb

— lib/find.rb (???Ó¥??? 26028)  
+++ lib/find.rb (???È¥??Ô¡?)  
@@ -46,9 +46,9 @@  
end  
begin  
if s.directory? then

- 

```
 d = Dir.open(file)

```

- 

```
 begin

```

- 

```
   for f in d

```

- 

```
       fs = Dir.entries(file)

```

- 

```
       fs.sort!

```

- 

```
       fs.reverse_each {|f|

```

next if f == “.” or f == “…”  
if File::ALT\_SEPARATOR and file =~ /^(?:[/\]|[A-Za-z]:[/\]?)$/  
then  
f = file + f  
@@ -58,10 +58,7 @@  
f = File.join(file, f)  
end  
paths.unshift f.untaint

- 

```
   end

```

- 

```
 ensure

```

- 

```
   d.close

```

- 

```
 end

```

- 

```
       }

```

end  
rescue Errno::ENOENT, Errno::EACCES  
end

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 16, 2009, 1:33am UTC](https://www.ruby-forum.com/t/stable-find-rb/179878/2 "2009-12-16T01:33:53Z")

</div>

e$B$\*$O$h$&$4$6$$$^$9!#e(B

In message [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
on Sun, 6 Dec 2009 23:47:35 +0900,  
Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> e$B%G%#%l%/%H%j$r:F5"E\*$K$?$I$C$?7k2L$rHf3S$9$k$3$H$,$"$C$?$N$G$9$,!"e(B  
> find.rb e$B$r;H$&$H!"e(Byield e$B$5$l$k%U%!%$%kL\>$N=g=x$,e(B readdir e$B$N5sF0$K0MB8$7$Fe(B  
> e$BITDj$J$?$a$K;H$($J$/$F;DG0$J;W$$$r$7$^$7$?!#e(B
> 
> readdir e$B$,JV$9=g$Ke(B yield e$B$7$J$1$l$P$J$i$J$$$H$$$&M}M3$O$J$$$H;W$&$N$G!"e(B  
> e$B%G%#%l%/%H%jFb$N%U%!%$%k$re(B sort e$B$7$F$d$k$H$$$&$N$O$I$&$G$7$g$&e(B?  
> e$B4:$($FM}6~$rIU$1$k$H$9$l$P!"e(B

1. e$B$=$N$^$^$N\>uBVe(B(ls -fe$BAjEve(B)e$B$,M\_$7$$!#e(B
2. e$B$J$k$Y$/JV$9=g$K%G%#%l%/%H%j!&%D%j!\<$r%3%T!\<$7$?$$!#e(B
3. e$B2~$a$Fe(Blocalee$B$K0MB8$7$?J}K!$G%=!\<%H$7$?$$$N$GL5BL$K$J$k!#e(B
4. 

e$BHs\>o$KB?NL$J?t$N%U%!%$%k$,$"$C$?\>l9g$K!"ITMW$J%=!\<%H$N=hM}$G@-G=$Ne(B  
e$BDc2\<$,5/$-$=$&!#e(B

e$B$H!“$$$C$?$”$?$j$G$7$g$&$+!#e(B(e$B$=$l$\>$l!“40A4$KFHN)$7$?FbMF$G$O$”$j$^e(B  
e$B$;$s$,!#e(B)

e$B%=!\<%H$9$k$+$I$&$+;XDj$9$k!"2?$i$+$NJ}K!$,MQ0U$5$l$F$$$?J}$,NI$5$=$&$Ke(B  
e$B;W$($^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 16, 2009, 5:05am UTC](https://www.ruby-forum.com/t/stable-find-rb/179878/3 "2009-12-16T05:05:45Z")

</div>

2009e$BG/e(B12e$B7ne(B16e$BF|e(B9:33 Takahiro K.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 1. e$B$=$N$^$^$N\>uBVe(B(ls -fe$BAjEve(B)e$B$,M\_$7$$!#e(B

Dir.entries e$B$J$I$r;H$C$F$/$@$5$$!#e(B

> 1. e$B$J$k$Y$/JV$9=g$K%G%#%l%/%H%j!&%D%j!\<$r%3%T!\<$7$?$$!#e(B

e$B$=$N$h$&$K%3%T!\<$9$k$H$I$&4r$7$$$N$G$7$g$&$+e(B?

e$B$b$74r$7$$$3$H$,$"$k$H$7$F$b!"e(B  
e$B$\*$=$i$/e(B OS e$B$d%U%!%$%k%7%9%F%`$K0MB8$9$k!"e(B  
e$B%]!\<%?%V%k$G$J$$OC$J5$$,$7$^$9!#e(B

> 1. e$B2~$a$Fe(Blocalee$B$K0MB8$7$?J}K!$G%=!\<%H$7$?$$$N$GL5BL$K$J$k!#e(B
> 2. e$BHs\>o$KB?NL$J?t$N%U%!%$%k$,$"$C$?\>l9g$K!"ITMW$J%=!\<%H$N=hM}$G@-G=$Ne(B  
> e$BDc2\<$,5/$-$=$&!#e(B

find.rb e$B$G$O3F%U%!%$%k$re(B lstat e$B$9$k$N$G!"e(B  
e$B=hM};~4V$H$7$F$O$=$A$i$,;YG[E\*$K$J$k$N$G$O$J$$$+$H;W$$$^$9!#e(B

e$B$^$?!":#2se(B find.rb e$B$NCf?H$r$\_$F5$$,$D$$$?$N$G$9$,e(B  
e$B3F%U%!%$%k$re(B stat e$B$7$Fe(B lstat  
e$B$9$k$H$$$&%3!\<%I$K$J$C$F$$$^$7$?!#e(B  
(File.exist? file e$B$H$7$F$+$i!"e(BFile.lstat(file).directory?  
e$B$H$7$F$$$?e(B)

e$B$3$l$OL5BL$J$o$1$G$9$,!":#$^$G$KJ86g$r$\_$?3P$($,$J$$$3$H$r9M$($k$H!"e(B  
find.rb  
e$B$K@-G=$r8B3&$^$G5a$a$k$R$H$O$8$D$O$$$J$$$N$G$O$J$$$+$H$$$&5$$,$7$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 17, 2009, 5:49am UTC](https://www.ruby-forum.com/t/stable-find-rb/179878/4 "2009-12-17T05:49:24Z")

</div>

2009e$BG/e(B12e$B7ne(B16e$BF|e(B13:37 Urabe S.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> e$B$=$l$O4QB,HO0O$NLdBj$G$O$J$$$G$7$g$&$+!#e(B  
> e$B\>/$J$/$H$b;d$O$=$l$KITK~$r3P$($Fe(BIRCe$B$G$OJ86g$r8@$C$?$3$H$,$"$j$^$9!#e(B

e$B$O$$!#$o$?$7$,5$$,$D$$$?HO0O$G$O!"$H$$$&$3$H$G$9!#e(B

e$B0U?^$O!"LdBj$K;W$C$??M$OB?$/$J$$$N$G$O$J$$$+$H$$$&$3$H$G$9!#e(B

e$B$8$D$O$$$J$$$N$G$O$J$$$+!“$H$$$&5$$,$7$?$N$O0l?M%5%s%W%k$,8=$l$?$N$Ge(B  
e$B$?$7$+$K$$$$$9$.$G!”$^$A$,$$$G$7$?!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [December 16, 2009, 5:37am UTC](https://www.ruby-forum.com/t/stable-find-rb/179878/5 "2009-12-16T05:37:56Z")

</div>

Tanaka A. e$B$5$s$O=q$-$^$7$?e(B:

> e$B$3$l$OL5BL$J$o$1$G$9$,!":#$^$G$KJ86g$r$\_$?3P$($,$J$$$3$H$r9M$($k$H!"e(B

e$B$=$l$O4QB,HO0O$NLdBj$G$O$J$$$G$7$g$&$+!#e(B  
e$B\>/$J$/$H$b;d$O$=$l$KITK~$r3P$($Fe(BIRCe$B$G$OJ86g$r8@$C$?$3$H$,$"$j$^$9!#e(B

# pdumpfse$B$,%7%9%F%`%3!\<%k$NH/9T$7$9$.$GCY$$!#e(B

Alternativee$B$^$G:n$C$?$3$H$,$"$j$^$9!#e(B  
[http://coderepos.org/share/browser/lang/ruby/misc/shystd/lib/findx.rb](http://coderepos.org/share/browser/lang/ruby/misc/shystd/lib/findx.rb)
