论坛首页 编程语言技术论坛

日积月累-分享我的工具库

浏览 17795 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-08-04   最后修改:2010-08-11

 

 

  • 批量替换 指定目录及其子目录中所有文件内的字符串

 

#!/usr/bin/env ruby

class File
        class << self

        def gsub!(s,t,dir=Dir.pwd)

                Dir.entries(dir).each do |f| 
                        puts f
                        next if(f == "." || f == "..")

                        if(File.file? f) then
                                ct = IO.readlines(f).join
                                if ct.index(s) then
                                        puts "replace file <#{f}>." 
                                        ct.gsub!(s,t)
                                        File.open(f,"w+"){|ff|ff.write ct} 
                                end 
                        elsif(File.directory? f) then
                                self.gsub!(s,t,File.join(dir,f))
                        end 
                end 

        end 

        #end of <<

        end 

end

 

使用的时候:

 

File.gsub!("reg","--reg--",Dir.pwd)

 

就可以了.

 

 

 

 

  • 批量删除指定目录及子目录下含有某个扩展名的文件

#!/usr/bin/env ruby

class File
	class << self
	
	def grm(path,ext)
	  
  	  Dir.entries(path).each do |f|
  		next if (File.basename(f) == '.' || File.basename(f) == '..')

  		if File.directory?(File.join(path,f))
  			grm(File.join(path,f),ext)
  		elsif f != File.basename(f).chomp(ext)
  			puts File.join(path,f)
  			FileUtils.rm_f(File.join(path,f))
  		end
  	  end
  	
        end

	#end of <<

	end

end
 
File.grm("C:\\scripts",'log')
可以删除scripts下面及该目录的子目录下面所有log文件.


  • 获得本机IP

class Socket
    class << self

    def ips
          Socket.getaddrinfo(Socket.gethostname, nil)
    end

    end
end
 Socket.ips可以获得本机的IP列表数组.
   发表时间:2010-08-06  
擦,这还新手贴?什么不新手?

我写出来给大家分享下这些很有价值的工具,你们有人不满意?

什么装12+1的人啊.

东西是简单的,但你有积累么?

这些东西大家Copy过去就可以用了,方便就是最大的价值所在.

谁给的新手贴,真BC!
0 请登录后投票
   发表时间:2010-08-06  
我支持你。

另外,你第二个脚本中第12行应该是调用grm这个方法吧。
0 请登录后投票
   发表时间:2010-08-06   最后修改:2010-08-06
这种事情用ruby属于杀鸡用牛刀:

1.
find 'yourpath' -type f -iname '*.html' -exec sed -i 's/regexp/replacement/g' '{}' \;


2. 请按1依葫芦画瓢
0 请登录后投票
   发表时间:2010-08-06  
其实... ruby也可以写成像Readonly一样的吧..

只不过...xxxxxxxxx

话说...这个应该大家投票的原因嘛。。。你懂的。。。

我那个jruby聊天工具,某人还想投隐藏呢...
0 请登录后投票
   发表时间:2010-08-06  
Readonly 写道
这种事情用ruby属于杀鸡用牛刀:

1.
find 'yourpath' -type f -iname '*.html' -exec sed -i 's/regexp/replacement/g' '{}' \;


2. 请按1依葫芦画瓢



您老也出来遛弯了?

我干那个事情是在windows上面,没装cygwin,请教该怎么做.
0 请登录后投票
   发表时间:2010-08-06  
qichunren 写道
我支持你。

另外,你第二个脚本中第12行应该是调用grm这个方法吧。


对,写错了,是个递归,改名的时候改错了
0 请登录后投票
   发表时间:2010-08-06   最后修改:2010-08-06
可以写点神秘的 one-liner ..

1 some-dir str-to-find str-to-replace
Dir.glob("%s/**/*"% $*){|f|s=IO.read(f).gsub($*[1],$*[2]);File.open(f,'w')<<s}


ruby -rfileutils 2.rb some-dir ext-to-remove
FileUtils.rm_f Dir.glob("%s/**/*.%s"%$*)
0 请登录后投票
   发表时间:2010-08-06  
night_stalker 写道
可以写点神秘的 one-liner ..

1 some-dir str-to-find str-to-replace
Dir.glob("%s/**/*"% $*){|f|s=IO.read(f).gsub($*[1],$*[2]);File.open(f,'w')<<s}


ruby -rfileutils 2.rb some-dir ext-to-remove
FileUtils.rm_f Dir.glob("%s/**/*.%s"%$*)



喜欢NS的风格,无论自己写文章还是回复别人的帖子,都能抛出点让人眼睛一亮的东西.

这个论坛该多一点NS一样的同学.
0 请登录后投票
   发表时间:2010-08-06  
night_stalker 写道
可以写点神秘的 one-liner ..

1 some-dir str-to-find str-to-replace
Dir.glob("%s/**/*"% $*){|f|s=IO.read(f).gsub($*[1],$*[2]);File.open(f,'w')<<s}


ruby -rfileutils 2.rb some-dir ext-to-remove
FileUtils.rm_f Dir.glob("%s/**/*.%s"%$*)


那个%是干什么的....
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics