`

linux下文件夹对比

 
阅读更多
diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。

1.命令格式:

diff[参数][文件1或目录1][文件2或目录2]

2.命令功能:

diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

3.命令参数:

-a     所有的文件都视为文本文件来逐行比较,甚至他们似乎不是文本文件.
-b     忽略空格引起的变化.
-B     忽略插入删除空行引起的变化.
-c     使用上下文输出格式.
-i     忽略大小写.
-P     在目录比较中,如果那个文件只在其中的一个目录中找到,那么它被视为在另一个目录中是一个空文件.
-q     仅报告文件是否相异,不报告详细的差异.
-r     当比较目录时,递归比较任何找到的子目录.

4、用例
diff -c -a -b -B -r A B
比较后的结果:
Only in A: aa
diff -c -a -b -B -r A/a.txt B/a.txt
*** A/a.txt     2016-11-07 09:21:57.089821250 +0800
--- B/a.txt     2016-11-07 09:17:19.231957097 +0800
***************
*** 1,6 ****
! ppackage com.ectrip.pms.app.interceptor;
! asdfdafafaf
! af 
  import com.ectrip.framework.util.StringUtil;
  import com.ectrip.pms.app.util.Const;
  import com.ectrip.pms.channel.app.vo.custom.CustomVO;
--- 1,5 ----
! package com.ectrip.pms.app.interceptor;
!
  import com.ectrip.framework.util.StringUtil;
  import com.ectrip.pms.app.util.Const;
  import com.ectrip.pms.channel.app.vo.custom.CustomVO;
***************
*** 27,33 ****
          String channel = (String) request.getAttribute("channel");
          CustomVO user = session == null ? null : (CustomVO) session.getAttribute(Const.SESSION_USER);
          if (user == null) {
!             // 删除登录cookieasfsdf
              WebUtil.removeCookie(request, response, "loginName");
              // ajax请求添加header判断登录状态,app请求
              if (isAjax ||StringUtil.isEmpty(channel) ||  channel.equalsIgnoreCase("APP")) {
--- 25,31 ----
          String channel = (String) request.getAttribute("channel");
          CustomVO user = session == null ? null : (CustomVO) session.getAttribute(Const.SESSION_USER);
          if (user == null) {
!             // 删除登录cookie
              WebUtil.removeCookie(request, response, "loginName");
              // ajax请求添加header判断登录状态,app请求
              if (isAjax ||StringUtil.isEmpty(channel) ||  channel.equalsIgnoreCase("APP")) {
***************
*** 45,48 ****
--- 42,49 ----
      } 

  }
+ :x 
+
+ :xOnly in A: aa

说明:
“+” 比较的文件的后者比前着多一行
“-” 比较的文件的后者比前着少一行
“!” 比较的文件两者有差别的行

[b]diff -c -a -b -B -r A B > ABdir.diff [/b]
比较后的差异文件到ABdir.diff文件中

[b]diff -i -b -B -r -y A B > ABdir.diff [/b]
横向对比
结果:
【code="java"】
diff -i -b -B -r -y A/a.txt B/a.txt
ppackage com.ectrip.pms.app.interceptor;                      | package com.ectrip.pms.app.interceptor;
asdfdafafaf                                                   |
af                                                            <
import com.ectrip.framework.util.StringUtil;                    import com.ectrip.framework.util.StringUtil;
import com.ectrip.pms.app.util.Const;                           import com.ectrip.pms.app.util.Const;
import com.ectrip.pms.channel.app.vo.custom.CustomVO;           import com.ectrip.pms.channel.app.vo.custom.CustomVO;
import com.ectrip.web.framework.util.WebUtil;                   import com.ectrip.web.framework.util.WebUtil;
import org.springframework.web.servlet.handler.HandlerInterce   import org.springframework.web.servlet.handler.HandlerInterce

import javax.servlet.http.HttpServletRequest;                   import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;                  import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;                          import javax.servlet.http.HttpSession;

/**                                                             /**
 * Class Describe                                                * Class Describe
 * <p/>                                                          * <p/>
 * User: yangguang Date: 16/10/15 Time: 下午12:58                * User: yangguang Date: 16/10/15 Time: 下午12:58
 */                                                              */
public class LoginInterceptor extends HandlerInterceptorAdapt   public class LoginInterceptor extends HandlerInterceptorAdapt

                                                                    @Override
    @Override                                                       public boolean preHandle(HttpServletRequest request, Http
    public boolean preHandle(HttpServletRequest request, Http               throws Exception {
            throws Exception {                                          Boolean isAjax = WebUtil.isAjax(request);
        Boolean isAjax = WebUtil.isAjax(request);                       HttpSession session = WebUtil.getSession(request, fal
        HttpSession session = WebUtil.getSession(request, fal           String channel = (String) request.getAttribute("chann
        String channel = (String) request.getAttribute("chann           CustomVO user = session == null ? null : (CustomVO) s
        CustomVO user = session == null ? null : (CustomVO) s           if (user == null) {
        if (user == null) {                                   (
            // 删除登录cookieasfsdf                           |             // 删除登录cookie
            WebUtil.removeCookie(request, response, "loginNam               WebUtil.removeCookie(request, response, "loginNam
            // ajax请求添加header判断登录状态,app请求                       // ajax请求添加header判断登录状态,app请求
            if (isAjax ||StringUtil.isEmpty(channel) ||  chan               if (isAjax ||StringUtil.isEmpty(channel) ||  chan
                response.addHeader("loginStatus", "0");                         response.addHeader("loginStatus", "0");
                response.setStatus(401);                                        response.setStatus(401);
                                                                                return false;
                return false;                                               } else {
            } else {                                                            response.sendRedirect("login.jsp");
                response.sendRedirect("login.jsp");                         }
            }                                                               return false;
            return false;                                               }
        }                                                               return true;
        return true;
                                                                    }
    }
                                                                }
}                                                             (
                                                              > :x
                                                              >
                                                              > :x
                                                              >

说明:
“|”表示前后2个文件内容有不同
“<”表示后面文件比前面文件少了1行内容
“>”表示后面文件比前面文件多了1行内容
分享到:
评论

相关推荐

    文件及文件夹对比工具,适合MAC

    标题提到的"文件及文件夹对比工具,适合MAC",指的是专为Mac设计的一款高效且易用的对比软件。这类工具可以帮助用户快速识别出两个文件或文件夹之间的异同,从而方便地合并修改、恢复误删内容或进行版本管理。 ...

    文件夹对比工具

    在IT领域,文件夹对比工具是一种非常实用的软件,它帮助用户快速检查两个文件夹中的内容差异,找出相同、不同或只存在于其中一个文件夹的文件。在这个特定的案例中,我们讨论的是一个由Java编程语言实现的文件夹对比...

    文件夹对比工具(代码)

    标题中的"文件夹对比工具(代码)"指的是一个开源或个人开发的项目,作者可能在不知晓已有类似名为"DirCmp"的程序情况下创建的。开发者分享了这个工具的源代码,希望对他人有所帮助,尽管他承认自己没有足够的时间去...

    文件夹内文件名对比

    当我们需要比较两个文件夹内的文件时,"文件夹内文件名对比"工具就能派上用场。这个工具可以帮助用户快速地找出两个指定路径A和B下相同或不同的文件名,以便进行文件同步、备份验证或者差异分析。以下是对这个功能的...

    文件夹目录结构对比_wenjianjia_

    在IT领域,文件夹目录结构对比是一个常见的任务,特别是在版本控制、备份恢复或者同步操作中。这个名为"文件夹目录结构对比_wenjianjia_"的工具或程序显然是设计用来比较两个文件夹内的内容,包括文件和子文件夹,以...

    linux下tar和zip压缩效率

    ### Linux下tar与zip压缩工具效率对比分析 #### 背景介绍 在Linux操作系统中,数据管理和存储是一项重要的任务。随着系统使用的深入,文件数量不断增多,如何有效地管理这些文件变得尤为关键。其中,文件的压缩处理...

    比较两个文件夹是否相同

    首先,我们要理解文件夹(在Windows和Linux中称为目录)是存储文件的容器。每个文件夹可以包含文件和其他文件夹,形成一种层次结构。对比两个文件夹,我们关注的是它们内部的文件名、文件大小以及文件内容是否一致。...

    LINUX下的基本操作

    以上是Linux下的一些基本操作命令,通过这些命令可以实现文件和文件夹的各种管理和处理功能。在实际使用过程中,熟练掌握这些命令能够大大提高工作效率,帮助用户更便捷地进行文件操作和系统管理。

    linux内核0.11完全注释_linux_注释_源代码_

    通过阅读这些注释,读者可以了解到早期Linux内核设计的简洁性和高效性,同时也能对比现代内核的改进和发展。例如,0.11版本的内核可能没有现代内核那么多的模块化和动态加载功能,但它是后来所有复杂功能的基础。 ...

    LINUX UVC支持NV12格式

    这可能意味着在Linux环境下,开发人员需要关注USB通信协议、UVC驱动的编程,以及理解NV12的颜色空间转换算法。 总的来说,这个话题涵盖了以下几个关键知识点: 1. Linux UVC驱动:理解和分析内核源码,特别是与USB...

    预览文件夹下的所有图片系统

    标题中的“预览文件夹下的所有图片系统”指的是一个能够帮助用户在不打开每个图片文件的情况下,快速预览文件夹内包含的所有图片的工具或功能。这种系统通常应用于图像查看软件或者操作系统中,目的是提高用户浏览和...

    linux操作系统实验linux下用户与组的管理借鉴.pdf

    14. 在 root 状态下,用 su yanyun 和 su – yanyun 命令分别切换到用户,注意对比命令提示符。 15. 用 newusers 命令批量添加 10 个用户,要求为 stu1~stu10,UID 为 771~780。 16. 用 chpasswd 命令批量修改以上 ...

    unison双向同步文件工具可在linux下和window系统下

    它通过对比两个同步端的文件元数据(如大小、修改时间等)来判断文件是否需要更新。 2. **安装与配置**: 在Linux系统中,Unison通常可以通过包管理器(如apt或yum)进行安装。而在Windows环境下,用户可以下载并...

    最好用的文件对比软件

    2. **文件夹对比**:文件夹对比则扩展了文件对比的概念,它可以分析两个目录下所有文件和子文件夹的差异,包括文件的增删改,甚至可以设置规则进行深度内容比对。这对于同步文件夹、备份验证或整理大量文件资料都...

    linux内核0.11完全注释+源码.rar

    最后,linux-0.11可能是实际的源代码文件夹,包含了所有0.11版本的源代码文件。通过直接浏览这些源代码文件,我们可以看到诸如main.c(内核主程序)、process.c(进程管理)、fs(文件系统)和mm(内存管理)等目录...

    eclipse-inst-linux64.tar.gz

    确保文件完整无误,可以使用`md5sum`或`sha256sum`命令,对比官方提供的校验和。 2. **解压文件**:使用`tar`命令解压文件。命令格式为`tar -zxvf 文件名`,例如: ``` tar -zxvf eclipse-inst-linux64.tar.gz `...

    开源国产文本编辑器Notepad介绍.docx

    2. 文件夹对比同步:Notepad--支持文件夹对比同步,能够同步文件夹中的文件。 3. 文本单词高亮:Notepad--支持文本单词高亮,能够高亮显示文本中的关键词。 4. 文件夹中批量查找:Notepad--支持文件夹中批量查找,...

    强大的对比工具

    在IT领域,对比工具是一种非常实用的软件,用于检测两个文件或文件夹之间的差异。"强大的对比工具"正如其名,提供了一种高效且便捷的方式来分析和比较数据内容。这样的工具通常具有用户友好的界面,无需复杂的安装...

    python linux目录上传脚本 自动对比文件md5上传

    python linux目录上传脚本。自动对比文件md5一键上传,上传模式SFTP。 支持路径排除,多目录上传,自动创建文件夹

    Linux下图像察看器gThumb.pdf

    相较于Linux下的其他图像查看软件,gThumb功能强大,能够正常显示GIF动画图像,并提供多种图片修改工具。唯一的缺点是启动速度相对较慢。用户可以在其项目主页http://gthumb.sourceforge.net获取帮助,下载最新版本...

Global site tag (gtag.js) - Google Analytics