1. 程式人生 > >查詢有特定檔案的子目錄 --- ls命令的妙用

查詢有特定檔案的子目錄 --- ls命令的妙用

問題描述在目錄“/data/”下有非常多的子目錄(一千個左右),目錄名是型別名稱,每個小時產生的資料按型別區分寫入到對應的子目錄中,檔案命名方式是“yyyymmddhh”,每個子目錄中的檔案數平均約500個。一小時內不一定每總型別的資料都有,也就是說有些子目錄下沒有那個小時的資料檔案的。現在的需求是:整點定時出一份上一小時有資料的型別名稱列表,一行一個型別名稱(子目錄名)寫入一個文字檔案中

/data/
|-- type_1
|   |-- 2013061809
|   |-- 2013061808
|-- type_2
|   |-- 2013061808

問題分析 此問題看粗看起來很簡單,只要迴圈的判斷所有子目錄是否存在上個小時的資料檔案就可以了。功能是完全沒問題的,但程式碼總感覺有點羅嗦,效能似乎也不是很好。於是尋找到了更優的解決方案,主要是ls結合萬用字元的一個妙用,大家一看就明白
ls -1 /data/*/`date -d -30minutes +%Y%m%d%H`|awk -F"/" '{print $3}' >  /tmp/list.txt