Ruby on rails 如何使用Ruby搜索和替换我目录中所有文件中的字符串?

Ruby on rails 如何使用Ruby搜索和替换我目录中所有文件中的字符串?,ruby-on-rails,ruby,search,replace,iteration,Ruby On Rails,Ruby,Search,Replace,Iteration,基本上这就是问题所在。我正试图找出如何将“CardSort”一词替换为“CardSort”,因为这两个词之间的空格弄乱了我的另一个脚本。我需要在文件中写入新的字符串替换(CardSort),并用其中的空格替换以前的字符串 我整天都在做这件事(说到编程,我简直是疯了:(),到目前为止,我想到的是: # Set the variables for find/replace @original_string_or_regex = /Card Sort/ @replacement_string = "C

基本上这就是问题所在。我正试图找出如何将“CardSort”一词替换为“CardSort”,因为这两个词之间的空格弄乱了我的另一个脚本。我需要在文件中写入新的字符串替换(CardSort),并用其中的空格替换以前的字符串

我整天都在做这件事(说到编程,我简直是疯了:(),到目前为止,我想到的是:

# Set the variables for find/replace
@original_string_or_regex = /Card Sort/
@replacement_string = "CardSort"

Dir.foreach("~/Desktop/macshapa_v2") do |file_name|
    next if file_name == '.' or file_name == '..'  # do work on real items
    text = File.read(file_name)
    replace = text.gsub!(@original_string_or_regex, @replacement_string)
    File.open(file_name, "w") { |file| file.puts replace }
end
我认为问题在于我没有定义变量“file_name”,但我不知道它应该定义为什么。基本上,它只需要运行整个目录,进行需要的更改


此外,如果我在一个文件夹中有多个文件夹和子目录,我如何让它在不逐个检查每个文件夹的情况下运行并应用更改?感谢所有帮助人员,我非常感谢。

您不需要定义
文件名
这是块的结果。如果您愿意没有发生任何事情,可能是因为表达式没有返回任何内容。尝试添加
将文件名放入块中,您将看到它找到了哪些文件。我猜您的脚本没有可迭代的文件,因为
Dir.foreach
无法使用
~/

# Set the variables for find/replace
# you can use regular variables here
original_string_or_regex = /Card Sort/
replacement_string = "CardSort"

# Dir.glob will take care of the recursivity for you
# do not use ~ but rather Dir.home
Dir.glob("#{Dir.home}/Desktop/macshapa_v2/*") do |file_name|
  text = File.read(file_name)
  replace = text.gsub!(original_string_or_regex, replacement_string)
  File.open(file_name, "w") { |file| file.puts replace }
end

使用像Sublime这样内置此功能的文本编辑器不是一个选项?op询问如何“使用ruby”,否则一个好的ol'
sed
也会是一个选项谢谢你!这对我来说非常有效。我想是~/with Dir.foreach。我很感激!