嗨,我正在寻找一个目录中正在更改的文件,我想获取每个文件的md5sum并将其写入文本文件.然后,我知道一个文件已经改变,我想再次运行它,所以我可以区分输出文件,看看究竟发生了什么变化.这是我尝试过但它不能正常工作.
此外,我不仅需要获取包含子目录的文件夹中每个文件的md5sum,我还需要它不遵循符号链接
#!/bin/bash
#
cd /sys/class
for i in $(find . -type f)
do
ls -lt "$i" >> /home/george/Desktop/before.txt
done
echo "Finished!"
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助
===编辑===
我把我的实际路径放进去,因为我真的不需要隐藏它们.无论如何运行它只返回几个文件(下面输出的文件),这些文件夹中的文件意味着它不会进入子目录并找到这些文件.顺便说一下,我的bash生锈了
--w------- 1 root root 4096 Jun 20 03:03 ./gpio/export
--w------- 1 root root 4096 Jun 20 03:03 ./gpio/unexport
-rw-r--r-- 1 root root 4096 Jun 20 03:03 ./firmware/timeout
-r--r--r-- 1 root root 4096 Jun 20 03:04 ./drm/version
Run Code Online (Sandbox Code Playgroud)
=== EDIT2 ===
不完全确定为什么没有找到某些这样的文件/例如/ sys/class/backlight/intel_backlight/brightness
还有许多其他类似的东西,因为某种原因没有找到这么多文件
tri*_*eee 13
这cd是不必要的,type -f事实上你已经绕过了符号链接.所以循环也是不必要的:
find /path/to/directory -type f -exec md5sum {} + >before.txt
Run Code Online (Sandbox Code Playgroud)
如果你的find年龄太大而无法支持-exec {} +尝试-exec {} \;.
为了md5sum比较,您可以尝试简单地删除相同的行;
fgrep -vxf before.txt after.txt | less
Run Code Online (Sandbox Code Playgroud)
这是假设列表before.txt将适合fgrep; 但如果你正在处理几十万个文件顶部,它可能会应付.但是,这不会识别已删除的文件before.txt.