linux過濾空檔案的命令總結

dbhelper發表於2014-11-26
在linux中有經常做檔案的操作,今天有個同事在生產環境統計資料,發現有很多日誌檔案都是空的,檔案太多了,他想檢視一下有哪些檔案不是空檔案。
而且還不想使用指令碼,就想用一個命令來搞定,確實夠懶的一個人。
簡單模擬了下。我只想檢視e.lst 因為它的大小不是空的。


DUM1102 /oravl01/oracle> ll *.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 a.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 b.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 c.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 d.lst
-rw-r--r--   1 oracle     dba              7 Jul 21 15:39 e.lst

最精簡的命令就是使用grep了。
DUM1102 /oravl01/oracle> ll *.lst|grep -v " 0 "
-rw-r--r--   1 oracle     dba              7 Jul 21 15:39 e.lst

當然也可以使用awk來完成。
難度再升級一下,新增一個檔案 f.lst 現在檔案的結構如下:
DUM1102 /oravl01/oracle> ll *.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 a.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 b.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 c.lst
-rw-r--r--   1 oracle     dba              0 Jul 21 15:39 d.lst
-rw-r--r--   1 oracle     dba              7 Jul 21 15:39 e.lst
-rw-r--r--   1 oracle     dba             14 Jul 21 16:35 f.lst

他現在想檢視大小為7位元組的檔案,使用awk來牛刀小試。
ll *.lst | awk -v file_size=7 '{ if ( $5==file_size ) print $5 " " $9}'
DUM1102 /oravl01/oracle> ll *.lst | awk -v file_size=7 '{ if ( $5==file_size ) print $5 " " $9}'       
7 e.lst

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347089/,如需轉載,請註明出處,否則將追究法律責任。

相關文章