我有一系列包含 sha1sums 和 md5sums 文件的目录。这些文件的格式是通常的hash space space filename
,每行一个哈希/文件。我想验证文件并打印出路径以及损坏文件的文件名。
find . -name SHA1SUMS -execdir echo "$PWD" sha1sum --quiet --check SHA1SUMS \; > logfile
(从这里修改)给出
./path1/SHA1SUMS
sda2.ntfs-ptcl-img.gz.aa: FAILED
blkdev.list: FAILED
Info-dmi.txt: FAILED
./path2/SHA1SUMS
而我正在寻找更多
./path1/sda2.ntfs-ptcl-img.gz.aa: FAILED
./path1/blkdev.list: FAILED
./path2/file: FAILED
输出类型。
find . -name SHA1SUMS -exec sh -c '
cd "${1%/*}" &&
sha1sum --check --quiet "${1##*/}" 2>/dev/null |
while IFS= read -r file
do
printf "%s\n" "${1%/*}/$file"
done' sh {} \;
它的输出应该与您的问题中显示的示例相匹配,并且应该可以使用任意路径。
或者,使用awk
而不是 shell 功能将SHA1SUMS
的相对路径添加到每个文件名:
find . -name SHA1SUMS -exec sh -c '
cd "${1%/*}" &&
sha1sum --check --quiet "${1##*/}" 2>/dev/null |
awk -v pre="${1%/*}" "{ print pre \"/\" \$0 }"' sh {} \;
请注意,根据其实现,sha1sum
可能会打印更改的文件名。具体来说,GNU*sum
实用程序会转义某些字符1,并且在检查模式下,\
在需要转义的文件名前加上 a ,从而使获得的路径连接您的SHA1SUMS
文件的相对路径和打印的文件名sha1sum
不适合重用。
1手册(的手册指的是 的手册)一般来说,“每个有问题的字符”。 sha1sum
md5sum
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句