【问题标题】:Ignoring directories from a file忽略文件中的目录
【发布时间】:2013-05-16 06:49:52
【问题描述】:

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

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

打印:

/
/bin/sleep
/dev/bpf

我想做的是:从该输出中,忽略任何目录并在 FILES(不是目录)上执行 md5。

有什么建议吗?

【问题讨论】:

    标签: parsing shell sorting awk lsof


    【解决方案1】:

    尝试关注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
    ...
    

    【讨论】:

    • 工作就像一个魅力。尝试对此 +1,但我没有足够的声誉。将其加入书签并使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2012-05-12
    • 2012-01-21
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多