我目前正在更改我们的系统以使用另一台服务器来获取文件(为跟踪某些内容而生成的文件,并不重要)。该系统基于java,获取这些文件的代码使用Linux突击队。获取这些文件的代码是:
session = connection.openSession();
session.execCommand("ls -B -A " + filelocation);
output = new BufferedReader(new InputStreamReader(new StreamGobbler(session.getStdout()), "UTF-8"));
然而,这在我们的原始服务器(x86_64 GNU/Linux)上确实有效,但在"新"服务器(SunOs 5.10 Generic Jan)上不起作用。在 SunOS 服务器上运行此命令时,我得到:
ls: illegal option -- B
usage: ls -1RaAdCxmnlhogrtuvVcpFbqisfHLeE@ [files]
我远不精通命令行,也没有编写原始代码。但这就是我想的
-A, --almost-all Do not list implied . and ..
-B, --ignore-backups Do not list implied entries ending with ~
有没有一种可选方法可以让它在 SunOS 服务器上工作?
编辑
检查每个字符串是否读取 line.endsWith("~");
while ((outputString = output.readLine()) != null) {
if(!outputString.endsWith("~")){
fileList.add(outputString);
}
}
你可以编写一个 shell 脚本new_ls调用 ls 并删除以"~"结尾的行
或者,当您在 java 中处理结果时,您也可以通过检查每个字符串读取 if line.endsWith("~")来忽略从 BufferedReader 读取的行;