当前位置: 首页 > 编程笔记 >

Linux系统递归生成目录中文件的md5的方法

徐奇
2023-03-14
本文向大家介绍Linux系统递归生成目录中文件的md5的方法,包括了Linux系统递归生成目录中文件的md5的方法的使用技巧和注意事项,需要的朋友参考一下

linux下使用md5sum递归生成整个目录的md5
今天要用md5sum操作目录,递归生成目录下所有文件的md5值,结果发现它不支持递归操作于是写了个php脚本处理下
代码:

  <?php  
   
  $path ='/data/www/bbs/source';  
  $outfile = 'file.md5';  
  get_file_md5($path, $outfile);  
   
  function get_file_md5($path, $outfile)  
  {  
    $path = rtrim($path, '/');  
    if(function_exists('scandir'))  
    {  
      $files = scandir($path);  
      foreach($files as $v)  
      {  
        if($v != '.' && $v != '..')  
        {  
          $file = $path.'/'.$v;  
          if(is_dir($file))  
          {  
            get_file_md5($file, $outfile);  
          }else 
          {  
            file_put_contents($outfile, md5_file($file)." ".$file."\n", FILE_APPEND);  
          }  
        }  
      }  
    }else 
    {  
      $files = opendir($path);  
      while(($f = readdir($files)) !== false)  
      {  
        if($f == '.' || $f == '..')  
          continue;  
        $file = $path.'/'.$f;  
        if(is_dir($file))  
        {  
          get_file_md5($file, $outfile);  
        }else 
        {  
          file_put_contents($outfile, md5_file($file)." ".$file."\n", FILE_APPEND);  
        }  
      }  
      closedir($files);  
    }  
  } 

注意:生成的md5值和文件之间是两个空格,否则导致错误如下

   

md5sum: file1.md5: no properly formatted MD5 checksum lines found  

在来个更简单的,使用linux的find命令一句搞定
代码:

  find /data/www/bbs/source -type f -print0 | xargs -0 md5sum > file2.md5 

测试

  md5sum -c file1.md5 
  md5sum -c file2.md5  

如图所示

这样把所有检测结果输出到屏幕上来了,如果最后一条显示这样的信息 md5sum: WARNING: 2 of 1147 computed checksums did NOT match 则说明在总共1147条中有2条是不符合的
然后我们可以

  md5sum -c file1.md5 | grep FAILED 

就很容易知道是哪些文件的篡改过

 类似资料:
  • 问题内容: 如何递归计算Linux目录中的文件? 我找到了这个: 但是,当我运行它时,它返回以下错误。 查找:路径必须在表达式之前:¦ 问题答案: 这应该工作: 说明: 仅包含文件。 ( 而不是)将命令的标准输出重定向到命令的标准输入。 (字数计数的缩写)在其输入(docs)上计算换行符,单词和字节。 仅计算换行符。 笔记: 更换用在当前文件夹要执行的命令。 您也可以删除,以在计数中包含目录(和符

  • 本文向大家介绍php递归删除目录与文件的方法,包括了php递归删除目录与文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php递归删除目录与文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的PHP程序设计有所帮助。

  • 问题内容: 假设我有一个目录中,其中有3个符号连接其他目录 ,和。我想列出中的所有文件,包括在那些,和。 为了更通用,我想列出所有文件,包括目录中的符号链接文件。,等停止在符号链接上,而无需导航到它们以进一步列出。 问题答案: 该选项将完成您想要的。它取消引用符号链接。 因此,您的命令将是: 您也可以使用 该选项指示find跟随符号链接到目录。 在Mac OS X上使用 如已弃用。

  • 本文向大家介绍shell 递归遍历目录下的所有文件并统一改名的方法,包括了shell 递归遍历目录下的所有文件并统一改名的方法的使用技巧和注意事项,需要的朋友参考一下 遇到一道题目,如何把某个目录下的每个文件统一在名字前加上”abc”,用shell实现 首先分析,一个目录下除了文件,还可能存在目录,这里可以看出需要有递归操作,如果是文件直接改名,目录则进入然后进行遍历 如何实现遍历?我们写一个函数

  • 本文向大家介绍java递归读取目录下所有文件的方法,包括了java递归读取目录下所有文件的方法的使用技巧和注意事项,需要的朋友参考一下 java递归读取目录下的所有文件(包含子目录下的所有文件)大概思路如下:通过file.listFiles()方法获取目录下的所有文件(包含子目录下的所有文件),得到files[]数组,然后遍历得到的所有文件,通过isFile(文件)和isDirectory(文件夹

  • 本文向大家介绍php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中,包括了php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中的使用技巧和注意事项,需要的朋友参考一下 php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中 实例代码: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!