一、背景
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; }
