sort_by and directories

D

Dafydd Fontenot

On my system I have this small ruby script as a test to arrange files.
I'm using "find" and trying to get the files sorted starting with the
files the farthest away from the base folder first in the array (so the
files nested in the most sub directories are first on the array).

Here's what the script looks like
test = Array.new

`find /folder/place -type f`.split("\n").each do |file|
test.push(file)
end

test.sort_by { |file| file.gsub(/[^\/]/, "").length }
puts test

However when I run the script the files are not actually organized any
different than what find returns.

Can someone correct me on my methodology?
 
N

Nobuyoshi Nakada

Hi,

At Tue, 28 Apr 2009 11:42:07 +0900,
Dafydd Fontenot wrote in [ruby-talk:335235]:
Here's what the script looks like
test = Array.new

`find /folder/place -type f`.split("\n").each do |file|
test.push(file)
end

test.sort_by { |file| file.gsub(/[^\/]/, "").length }
puts test

Array#sort_by returns sorted new array, but doesn't change the
receiver itself.

require 'find'
test = []
Find.find("/folder/place") {|file| test.push(file) if File.file?(file)}
puts test.sort_by {|file| file.count("/")}
 

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,997
Messages
2,570,240
Members
46,830
Latest member
HeleneMull

Latest Threads

Top