wake-up-neo.net

如何递归列出目录及其子目录中所有文件的Md5sum?

我想列出(并保存)目录中所有文件的Md5校验和,并将该列表保存在名为md5sum.txt的文本文件中

如果可以的话也会很好

  • 将它集成在tree命令中(它创建文件夹和文件的树结构)
  • 使其适用于文件夹和子文件夹(这很重要)
8
Sumeet Deshmukh

你可以使用find(在目录中)

find -type f -exec md5sum '{}' \; > md5sum.txt

如果要排除md5sum.txt文件本身,可以这样做:

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

你也可以使用循环:打开递归通配

shopt -s globstar

然后,在目录中:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

您也可以从这个文件中排除文件本身:

for i in **; do 
  [[ -f "$i" ]] && 
  [[ md5sum.txt != "$i" ]] && 
  md5sum "$i" >> md5sum.txt
done

这些都不会产生tree-类似的结构。但是它们会从起始目录打印文件的相对路径。如果您想要绝对路径,请使用find /path/to/directory ...

你可能想要事后关闭globstar(shopt -u globstar

22
Zanna

您可以执行以下命令:

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

结果文件中的输出将是这样的:

46684e3891d990acde2e723ee3d4e94a  /var/log/alternatives.log
39cf1ebf93452ed5f8b240b35ae73f9f  /var/log/alternatives.log.1
aa6c09c411d1d0870bca5f401d589332  /var/log/alternatives.log.2.gz
1
Yaron