首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证sha1sum和打印目录&损坏文件的文件名

验证sha1sum和打印目录&损坏文件的文件名
EN

Unix & Linux用户
提问于 2020-10-14 17:08:03
回答 2查看 372关注 0票数 0

我有一系列包含sha1sums和md5sums文件的目录。这些文件的格式是通常的hash space space filename格式,每行有一个散列/文件。我想验证这些文件并打印出路径以及损坏文件的文件名。

代码语言:javascript
复制
find . -name SHA1SUMS -execdir echo "$PWD" sha1sum --quiet --check SHA1SUMS \; > logfile

(修改自这里)给出

代码语言:javascript
复制
./path1/SHA1SUMS
sda2.ntfs-ptcl-img.gz.aa: FAILED
blkdev.list: FAILED
Info-dmi.txt: FAILED
./path2/SHA1SUMS

而我更想要的是

代码语言:javascript
复制
./path1/sda2.ntfs-ptcl-img.gz.aa: FAILED
./path1/blkdev.list: FAILED
./path2/file: FAILED

输出类型。

EN

回答 2

Unix & Linux用户

发布于 2020-10-14 18:18:14

代码语言:javascript
复制
#! /bin/bash
here=$(pwd)

find . -name SHA1SUMS | while read -r fname; do
    cd "$here" || exit
    dirn=$(dirname "$fname")
    cd "$dirn" || continue
    sha1sum --quiet --check SHA1SUMS 2>&1 | grep " FAILED" | ( echo -n "$dirn/"; cat )
done > logfile

如果您有包含\n的目录,这将中断,但这是极不可能的。

票数 0
EN

Unix & Linux用户

发布于 2020-10-14 19:09:44

试试这个:

代码语言:javascript
复制
find . -name SHA1SUMS -execdir \
  sh -c 'sha1sum --quiet -c "$@" | sed "s|^|$PWD/|"' - {} +

如果目录真正包含|,则可以在sed替换中使用其他字符,或者使用awk -v p="$PWD/" "{print p\$0}"

如果您的路径确实包含换行符,那么您需要一些比这更聪明的东西;-)

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/614530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档