我想知道是否有人可以帮助我从Java中完成此操作。
zcat -f -- $(ls -t a_log_file.log*) > combined.log
a_log_file.log
,a_log_file.log.gz.1
,a_log_file.log.gz.2
...
我还没有找到任何不太复杂的东西。我想,我也可以以某种方式从Java运行它,但这感觉就像是一个错误的解决方案。
答案 0 :(得分:0)
File logDir = new File("path/to/log/files");
File[] nonGzippedFiles = logDir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return !pathname.getName().contains("gz");
}
});
FileOutputStream combinedLogFiles = new FileOutputStream(new File("path/to/combined.log"));
for (File nonGzippedFile : nonGzippedFiles) {
FileInputStream fileInputStream = new FileInputStream(nonGzippedFile);
int read = 0;
byte[] buff = new byte[128];
while ((read = fileInputStream.read(buff)) > 0) {
combinedLogFiles.write(buff, 0, read);
}
fileInputStream.close();
}
combinedLogFiles.close();
// path/to/combined.log now contains all the contents of the log files
你必须进行一些异常处理。这也不是已经gzipped日志。我假设那部分