一、背景
Linux服务器的一个目录里,每天产生海量的文件。为了防止磁盘被写满。
决定每天删除部分老文件。OK,问题来了,如何过滤出指定日期的文件?
二、强大的Linux
一行代码搞定:
ls --full-time /recordings/ | sed -n '/2018-03-21/p'
得到的文件列表就是2018-03-21生成的文件。
三、Java示例代码
public WavInfo getWavInfo(){ WavInfo info = new WavInfo(); List<String> list = new ArrayList<String>(); String yestoday = new DateUtil().arroundIntervalDay(new Date(), -1); String month = yestoday.substring(0, 7); StringBuffer cmd = new StringBuffer(); cmd.append("ls --full-time "); cmd.append(ConfigManager.getInstance().getRecordPath()); cmd.append(month); // cmd.append(ConfigManager.getInstance().gettMonth()); cmd.append(" | "); cmd.append("sed -n '/"); cmd.append(yestoday); // cmd.append(ConfigManager.getInstance().gettDay()); cmd.append("/p'"); String cmdString = cmd.toString(); logger.debug("will execute cmd : {}",cmdString); list = new LinuxCmdUtil().executeLinuxCmd(cmdString); // new LinuxCmdUtil().executeLinuxCmdT(cmd.toString()); if(list != null) { // info.setPath(ConfigManager.getInstance().getRecordPath()+ConfigManager.getInstance().gettMonth()); // info.setMonth(ConfigManager.getInstance().gettMonth()); info.setPath(ConfigManager.getInstance().getRecordPath()+month); info.setMonth(month); info.setWavList(list); return info; } return null; }