CU达人 发表于 2012-02-01 20:53

使用ruby实现这样的功能

本帖最后由 CU达人 于 2012-02-01 20:54 编辑

有个文件,如下所示:

test@test ~: cat tmp
/dev/sda3
/dev/mapper/vg_genius-lv_home


想要使用ruby来实现 对里面的目录统一执行"ls"命令,
类似于:
test@test ~: ls /dev/sda3/dev/mapper/vg_genius-lv_home
/dev/mapper/vg_genius-lv_home/dev/sda3



以下是我自己写的,仅仅是对每一行进行"ls" ,这样做的效率不高.


如何改善呢?
各位达人们,帮看看,谢谢....
#!/usr/bin/ruby

#Example -Read file and run "ls" commmand


#Read from the file
file = File.new("tmp", "r")

while ( line = file.gets)

   cmd = `ls #{line}`
   puts cmd

end

zhlong8 发表于 2012-02-01 21:13

你这得开多少进程啊

bugbugbug3 发表于 2012-02-02 09:11

思路应该是这样才对:
先把命令字串做成 ls dir1 dir2 dir3 .. 的形式,然后再用system来执行。
而不是在while里面循环调用 ls#!/usr/bin/ruby

lines = File.new("tmp", "r").lines.map{|line| line.strip }
system "ls #{lines.join(" ")}"

Sevk 发表于 2012-02-02 10:25

lastfile 发表于 2012-02-02 13:29

学习学习:lol

Sevk 发表于 2012-02-03 10:26

页: [1]
查看完整版本: 使用ruby实现这样的功能