为列(.CSV文件)中的每个值生成md5sum,然后将生成的md5sum值与已经给定的md5sum值进行比较



我是Linux的初学者,仍在学习,无法继续执行任务

因此,有一个CSV文件,其中只有几列。

第1列-文件名,

第2列-文件的路径,

第3列-该文件的md5和值(每行(。

我的目标是通过转到提到的路径(第2列(生成文件(第1列(的md5sum值,然后将该值与CSV文件中已经存在的md5sum进行比较,同时忽略前三行(标题(。对于CSV文件中的所有行

示例

cat Sample.csv
header1 
header2
file,pathTofile,md5sum
script.sh,/c/folder,987fg98df7g9df7g94353454
another.sh,/c/training/folder,54657981sdssgs654643535

OUTPUT(假设第1行具有正确的md5sum值,而第2行没有(

md5sum is a match for script.sh
md5sum is not a match for another.sh

提前感谢

来自man md5sum

-c,--check
从FILE读取MD5和并检查它们的

这里FILE的格式与md5sum的输出相同:

bb8c5900589a82f48e15c2688670de39  file1
f23d2d7f519425c547d9e4287940ef72  /path/to/file2
...

因此,您可以将csv文件重新排列为相同的格式,然后运行md5sum -c:

awk -F, 'NR>3 {print $3"  "$2"/"$1}' Sample.csv | md5sum -c

NR>3跳过您的标题。如果您的示例不准确,请确保将3替换为实际的标题行数。

md5sum -c的输出看起来像

file1: OK
/path/to/file2: OK
some/corrupted/file: FAILED
file4: OK
...
md5sum: WARNING: 1 computed checksum did NOT match

相关内容

  • 没有找到相关文章

最新更新