如何用Groovy语言检查一个目录中除一个文件外的所有文件

bhmjp9jg  于 2022-10-07  发布在  其他
关注(0)|答案(1)|浏览(164)

我正在尝试在目录中的每个文件中搜索一个单词,但我想排除我的日志文件。

我的代码是这样的

user input: search test C:UsersDesktoptestGroovy

我的代码

import static groovy.io.FileType.FILES
import java.text.SimpleDateFormat

def terminal_log = new File("terminal.log")
def terminal_log_path = terminal_log.getName()
def fas = ""
def file2_path = ""
def cmd = System.console().readLine 'Enter command: '
String[] csplice = cmd.split(" ");
if(csplice.length == 3){
    def first_parameter = csplice[0]
    def second_parameter = csplice[1]
    def third_parameter = csplice[2]
    if(first_parameter == "search"){
        def file = new File(third_parameter)
        if(file.exists()){
            if(file.isDirectory()){
                file.eachFile(FILES) { f -> 
                    fas = "/"+f+"/"
                    File file2 = new File(fas)
                    file2_path = file2.getName()
                    if(!file2_path == terminal_log_path){
                        file2.eachLine{ line ->
                            if(line.contains(second_parameter)){
                                println "This file contains this word"
                            }
                        }
                    }
                }
            }else{
                println "Not a directory"
            }
        }else{
            println "Not exists"
        }
    }else{
        println "Invalid command"
    }
}else{
    println "Invalid command"
}

这块积木坏了

if(!file2_path == terminal_log_path){

在检查目录中的每个文件时,是否可以阅读任何文档来排除特定文件?

非常感谢

编辑:用户输入的目录有日志文件(Terminal.log)Terminal.log存在

xmjla07d

xmjla07d1#

它应该是:

if (file2_path != terminal_log_path) {
   ...
}

if (!(file2_path == terminal_log_path)) {
   ...
}

例如,您可以运行以下代码来查看将“Not”运算符应用于Groovy中的字符串的结果:

def file2_path = "/i/am/path/"
println (!file2_path) // prints false as file2_path is not an empty string

有关更多信息,您可以参考有关该主题的官方Groovy文档:

“NOT”运算符用感叹号(!)表示并反转基础布尔表达式的结果。特别是,可以将NOT运算符与Groovy事实相结合:

assert (!true)    == false
    assert (!'foo')   == false
    assert (!'')      == true

相关问题