我正在创建一个脚本,列出通过lsof输出打开的所有文件。我想校验特定文件并忽略该输出中的目录,但我们不知道 EFFECTIVELY 。例如:(我正在使用FreeBSD btw)
lsof | awk '/\//{print $9}' | sort -u | head -n 5
打印:
/
/bin/sleep
/dev/bpf
我想做的是:从该输出中,忽略任何目录并在FILES(而不是目录)上执行md5。
任何指针?
答案 0 :(得分: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
...