使用emacs检查大型文件

时间:2014-10-21 16:10:23

标签: emacs checksum

如何计算emacs中大.zip个文件的md5校验和?我想做点什么:

(secure-hash 'md5 (insert-file-contents "~/blah/blah.zip"))

然后拿出我的128位哈希值。我不确定使用什么函数来访问大文件(比如说400 MB)而不需要将文件读入缓冲区。

更新:我想我会添加一个快速的解决方法功能,因为从答案看来secure-hash对大文件不起作用。我下载了fciv.exe for windows,将其添加到exec-path并使用emacs中的这个功能。

(defun checksum (FILE &optional exe)
  (let* ((default "fciv")
         (EXE (if (and exe (executable-find exe)) exe default) )
         (call (concat EXE " " FILE) ) )
    (if (executable-find EXE)
        (progn
          (if (and exe (not (equal exe default) ) )
              (message (concat "'" exe "' not found, using " default) ) )
          (call-process-shell-command call nil t nil) )
      (progn
        (message "Hashing program not found in exec-path")
        nil) ) ) )

1 个答案:

答案 0 :(得分:0)

Emacs仅对字符串或缓冲区中的数据进行操作。因此,要么将整个文件放入缓冲区(如代码中),要么使用call-process之类的外部工具。