parsing - 忽略文件中的目录

标签 parsing shell sorting awk lsof

我正在创建一个脚本,该脚本列出了通过 lsof 输出打开的所有文件。我想对特定文件进行校验并忽略该输出中的目录,但我无法有效这样做。例如:(我正在使用 FreeBSD 顺便说一句)

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

打印:

/
/bin/sleep
/dev/bpf

我想做的是:从该输出中,忽略任何目录并对文件(而不是目录)执行 md5。

有什么指点吗?

最佳答案

尝试以下 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
...

关于parsing - 忽略文件中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671095/

相关文章:

c# - 如何使用infragistics语法解析引擎?

parsing - 匹配字符串中的括号

sorting - Redis:在 alpha 中排序哈希 "fields"

c++ - 排序插入到小(255 个元素)列表中

parsing - 可以区分 foo[.2] 和 foo[.20] 的 Mathematica 函数 foo

c++ - 从文件发出阅读空间

linux - 如何通过命令行在多个网络连接之间进行选择?

bash - 在 shell 脚本中运行时,echo 命令无法正确打印花括号

shell - CLISP:从 shell 命令返回 stdout、stderr 和 retcode

spring - 使用可分页对自定义 JPA 查询进行排序