2013-05-21 47 views
2

我正在創建一個腳本,其中列出了所有通過lsof輸出打開的文件。我想校驗和特定的文件,並忽略來自該輸出的目錄,但是很難做到這一點有效地。例如:(我使用FreeBSD的BTW)忽略文件中的目錄

lsof | awk '/\//{print $9}' | sort -u | head -n 5  

打印:

/ 
/bin/sleep 
/dev/bpf 

我希望做的是:從產量,忽略任何目錄和文件上執行MD5(不是目錄)。

任何指針?

回答

3

給一個嘗試以下perl命令:

lsof | perl -MDigest::MD5=md5_hex -ane ' 
    $f = $F[ $#F ]; 
    -f $f and printf qq|%s %s\n|, $f, md5_hex($f) 
' 

它過濾lsof輸出到純文本文件(-f)。查看perlfunc以更改它以添加不同類型的文件。

它輸出由空格字符分隔的每個文件及其md5。在我的系統的一個例子是這樣的:

/usr/lib/libm-2.17.so a2d3b2de9a1f59fb99427714fefb49ca 
/usr/lib/libdl-2.17.so d74d8ac16c2d13128964353d4be7061a 
/usr/lib/libnsl-2.17.so 34b6909ec60c337c21b044642b9baa3d 
/usr/lib/ld-2.17.so 3d0e7b5b5c4e59c5c4b6a858cc79fcf1 
/usr/sbin/lsof b9b8fbc8f296e47969713f6369d97c0d 
/usr/lib/locale/locale-archive 3ea56273193198a718b9a5de33d553db 
/usr/lib/libc-2.17.so ba51eeb4025b7f5d7f400f1968f4b5f9 
/usr/lib/ld-2.17.so 3d0e7b5b5c4e59c5c4b6a858cc79fcf1 
... 
+0

+1恭喜你現在有機會獲得主持人的工具:d – fedorqui

+0

工作就像一個魅力。試圖+1,但我沒有足夠的聲譽。將書籤添加到它。 – munkeyoto