在Ruby中删除使用名称包含的文件

在Ruby中删除使用名称包含的文件,ruby,file,if-statement,io,automation,Ruby,File,If Statement,Io,Automation,我编写了以下代码,以保留与传入名称匹配的文件,并删除文件夹中的其余文件 def removeFiles2(path, namePart) aft_logger=AFTLogger.new Dir[path+'/*'].each do |fname| break if !(fname.include? namePart) else File.delete(fname) end end end end 但是我得到了下面的错误 Opera

我编写了以下代码,以保留与传入名称匹配的文件,并删除文件夹中的其余文件

def removeFiles2(path, namePart)
  aft_logger=AFTLogger.new

  Dir[path+'/*'].each do |fname|
    break if !(fname.include? namePart)
          else File.delete(fname)
          end
  end
end
end
但是我得到了下面的错误

Operation not permitted - Operation not permitted - //CSLK-CISP-81-01/jboss/server/TeamCI_CEPHEUS_OR_R81_Spider_110/home/RoSModule/XML/In/Error: 
Operation not permitted - Operation not permitted - //CSLK-CISP-81-
01/jboss/server/TeamCI_CEPHEUS_OR_R81_Spider_110/home/RoSModule/XML/In/Error tempDevMode.rb line 37 in function test

我做错了什么?如果有任何帮助,我们将不胜感激。

为什么不删除所有文件,除非文件basename与您要排除的文件匹配

def删除_文件(路径,排除)
Dir.glob(“#{path}/*”)。每个do文件|
File.delete(文件)除非File.basename(文件)。include?(排除)
结束
结束

下面的代码应该有效。试试看

def removeFiles(path, namePart)

Dir[path+'/*'].each do |fname|
    if fname.include? namePart
     //just print something you want

    else  
      File.delete(fname)
  end
 end
end

这是你的真实代码吗?由于修饰符
if-else
construct(没有这样的东西),它将引发语法错误。你可以写
break if condition
,但不能写
break if condition else…
@Stefan你错过了未对齐的
end
:)它实际上是
break(if..else..end)
。是的,这个break非常令人困惑:)而且它肯定是一个语法错误(如前所述,if/else周围没有明确的括号)@mayooran除非fname.include,否则您可以编写
break?namePart
和下一行的
文件。删除(fname)
,即没有
else
end