在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