我们在我爸爸的电脑上创建了一个文件夹,让家里的每个人都可以存放和分享他们的照片和视频。
Example of directories:
/Family_Photo/Penguins/2017 09 02/
/Family_Photo/East Beach/2017 10 11/Seaside/
/Family_Photo/East Beach/2017 10 11/Games/
使用md5deep,我能够为所有子目录中的所有文件创建一个完整的校验和列表
md5deep -r /Family_Photo/ > /Family_Photo/md5sum.log
代替每次为所有(新添加的和现有的)文件重新生成完整的md5校验和,
如何创建一个bash脚本来自动检测以前未执行过md5的任何文件,并为这些新文件生成校验和并将原始md5sum.log附加到这些新文件
发布于 2018-07-05 16:21:28
感谢所有人的投入。经过一番努力,我终于想出了一个能满足我当前需求的东西。
此部分仅在第一次运行时运行
md5deep -r /Family_Photos/ > /Family_Photo/photos.md5
cd Family_Photos/ & find . -print | sort > today.txt
下一部分将形成我的脚本。为每次运行准备txt文件。
cd Family_Photos/ & rm old.txt & mv today.txt old.txt
以递归方式将所有文件列出到today.txt中
find . -print | sort > today.txt
将新添加的文件更新到new.txt
grep -xvFf old.txt today.txt > new.txt
生成所有新文件的md5sum并附加到photos.md5中
cat new.txt | xargs -d '\n' md5sum >> photos.md5
发布于 2018-06-03 18:36:09
我将获取一个ls -l (并将其存储在一个临时文件中),
然后在一份日报上用一个新的ls来区分它?基础,如果diff返回0,则一切正常,如果diff显示差异。
然后我将只md5 diff报告的文件,用新的ls更新ls临时文件。我将使用--LTYPE-line-format=%<
,这样它就不会查找删除的文件(临时文件中存在的文件,而不是新运行的ls中的文件)。
这将是查找“新”文件的presudo-code:
new_files=diff --suppress-common-lines --changed-group-format='%<' --unchanged-group-format='' temp_file $(ls -l)
deleted_files=diff --suppress-common-lines --changed-group-format='%>' --unchanged-group-format='' temp_file $(ls -l) #so you can log deletions too
我将继续编写其他代码(创建第一个临时文件并对数据进行哈希处理)
显然,如果您有一个目录,您必须运行ls -R
,而不是从您想要检查的路径的根目录运行脚本
https://stackoverflow.com/questions/50665116
复制相似问题