2013-05-21 4 views
2

Я создаю скрипт, в котором перечислены все файлы, открытые через выход lsof. Я хотел бы контролировать определенные файлы и игнорировать каталоги с этого вывода, но я не могу это сделать EFFECTIVELY. Например: (я использую FreeBSD BTW)Игнорирование каталогов из файла

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

печатает:

/ 
/bin/sleep 
/dev/bpf 

То, что я хотел бы сделать, это: С этого выхода, игнорировать любые каталоги и выполнить md5 на FILES (не каталоги).

Любые указатели?

ответ

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

Смежные вопросы