2017-09-29 5 views
2

渡された名前と一致するファイルを保持するために、次のコードを書いて、フォルダ内の残りのファイルを削除します。名前を使用しているファイルを削除するにはRubyに含まれています

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 

私はここで間違っていますか?どんな助けでも大歓迎です。ファイルのベース名を使用すると、コードの下

def remove_files(path, exclude) 
    Dir.glob("#{path}/*").each do |file| 
    File.delete(file) unless File.basename(file).include?(exclude) 
    end 
end 
+0

あなたは実際のコードですか?修飾子 'if-else'の構成のために_syntax error_を発生させます(そのようなものはありません)。 'break if condition'と書くことができますが、' else else ...ならば中断しないでください。 ' – Stefan

+0

@Stefanあなたはミスアライメントされた' end'を見逃しました:)実際は 'break(else .. end)'です。 – mudasobwa

+0

ええ、そのブレークは非常に混乱しています:)そして、間違いなく文法エラーです(書かれているように、if/elseの周りに明示的なかっこはありません)。 –

答えて

2

を除外したいファイルが動作するはず一致しない限り

0

理由だけではなく、すべてのファイルを削除しません。ただ試してみてください

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