2016-11-17 75 views
1

这里的一些帮助将不胜感激。目标是将所有.txt文件重命名为ruby中用户输入的目录中的.text。我必须使用fileutils作为要求。当我运行我的当前脚本时,我没有收到任何错误。然而,没有任何事情发生......我相信你们中的一个人可能可以帮我指出这个问题。Ruby:将给定目录中的所有文件从.txt重命名为文本

#!/usr/bin/ruby 
#This program was written by me 
puts “what directory would you like to change? “ 
require 'fileutils' 
pathname = gets.chomp 
def rename(pathname) 
    currentdir = Dir.new('.') 
    newfile = FileTest.exists?(pathname.to_s) 
    if pathname != "q" 
     if newfile == "true" 
      require 'fileutils' 
        newfile.each do |f| 
        FileUtils.mv "#{File.dirname(f)}/#{File.basename(f, '.*')}.txt", "#{File.dirname(f)}/#{File.basename(f,'.*')}.text" 
        end 
     elsif currentdir 
      require 'fileutils' 
      (currentdir).each do |f| 
       FileUtils.mv "#{File.dirname(f)}/#{File.basename(f, '.*')}.txt", "#{File.dirname(f)}/#{File.basename(f,'.*')}.text" 
      end 
     else 
      puts "Invalid Path" 
     end 
    end 
end 

编辑:我想我现在知道这个问题,但不知道在哪里把代码。我需要cd到用户输入的目录,这应该是我只能更改主目录中的.txt文件的原因。

此问题与建议的意见不同,因为要求是使用fileutils并让用户输入他们想要编辑的目录。此项查找文件名从任何地方,并且不使用文件实用程序

+0

的可能的复制[如何在质量红宝石重命名文件(http://stackoverflow.com/questions/10758694/how-to- mass-rename-files-in-ruby) – Wes

+0

这可能是因为你从来没有真正调用过重命名方法吗? – Rashmirathi

+0

虽然不尽相同。要求是使用fileutils并让用户输入他们想要编辑的目录。此条目从任何地方查找文件名并且不使用fileutils –

回答

0

当我从代码理解,

1)你没有打电话rename功能

2)你rename功能有不必要的检查newfile,currentdir - 如果你想从当前目录执行,它会理解“。”符号,并会在当前目录中执行glob。



我搬到pathname != "q"rename因为重命名之外必须做重命名,没有别的。

所以最终代码:

#!/usr/bin/ruby 
#This program was written by me 

require 'fileutils' 

def rename(pathname) 
    if File.directory?(pathname.to_s) 
    puts "renaming files in path"+pathname.to_s 
    Dir.glob(File.dirname(pathname.to_s)+"/*.txt").each do |f| 
     FileUtils.mv f, "#{File.dirname(f)}/#{File.basename(f,'.*')}.text" 
     puts "#{File.basename} => #{File.basename(f,'.*')}.text" 
    end 
    else 
    puts "Invalid Path" 
    end 
end 

puts "what directory would you like to change? " 
pathname = gets.chomp 

if pathname != "q" 
    rename(pathname) 
end 



附:普通用户只要致电:

rename -S .txt .text /path/to/files/*.txt 

或:

rename -S .txt .text ./*.txt 
+0

遇到同样的问题我几乎开始使用。我运行脚本并没有任何反应。虽然没有错误。 但是,如果路径无效,它会发出警报。它以前没有这样做过。 –

+0

您可以编写如何调用脚本以及您作为路径传递的内容吗? – num8er

+0

还要确保在路径中有该扩展名的文件您定义了 – num8er

相关问题