肯定有办法轻松做到这一点!
我try 过Linux命令行应用程序,比如sha1sum
和md5sum
,但它们似乎只能计算单个文件的哈希值,并输出一个哈希值列表,每个文件一个.
我需要为文件夹的全部内容(不仅仅是文件名)生成一个散列.
我想做点像
sha1sum /folder/of/stuff > singlehashvalue
Edit:澄清一下,我的文件在目录树中处于多个级别,它们不都位于同一根文件夹中.
肯定有办法轻松做到这一点!
我try 过Linux命令行应用程序,比如sha1sum
和md5sum
,但它们似乎只能计算单个文件的哈希值,并输出一个哈希值列表,每个文件一个.
我需要为文件夹的全部内容(不仅仅是文件名)生成一个散列.
我想做点像
sha1sum /folder/of/stuff > singlehashvalue
Edit:澄清一下,我的文件在目录树中处于多个级别,它们不都位于同一根文件夹中.
一种可能的方法是:
sha1sum path/to/folder/* | sha1sum
如果有一个完整的目录树,那么最好使用find和xargs.一个可能的命令是
find path/to/folder -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum
最后,如果您还需要考虑权限和空目录:
(find path/to/folder -type f -print0 | sort -z | xargs -0 sha1sum;
find path/to/folder \( -type f -o -type d \) -print0 | sort -z | \
xargs -0 stat -c '%n %a') \
| sha1sum
stat
的参数将导致它打印文件名,后跟八进制权限.这两个查找将依次运行,导致磁盘IO量加倍,第一个查找所有文件名并对内容进行校验和,第二个查找所有文件名和目录名,打印名称和模式.然后,对"文件名和校验和"列表以及"名称和目录,具有权限"列表进行校验和,以获得较小的校验和.