相关疑难解决方法(0)

仅包含与递归diff中的给定模式匹配的文件

如何在两个目录(a和b)中执行文件的递归diff:

$ diff -r a b
Run Code Online (Sandbox Code Playgroud)

但只能查看名称与给定模式匹配的文件.例如,使用find命令中提供的相同语法,它看起来像:

$ diff -r a b -name "*crazy*"
Run Code Online (Sandbox Code Playgroud)

这将显示a和b中具有相同名称和路径的文件之间的差异,其名称中包含"疯狂".

实际上,我正在寻找与diff中可用的--exclude选项相反的方法.

unix shell diff

20
推荐指数
1
解决办法
6861
查看次数

使diff忽略符号链接

我的项目有以下结构

/project/config.mk
/project/dir1/config.mk -> ../config.mk
/project/dir2/config.mk -> ../config.mk
Run Code Online (Sandbox Code Playgroud)

当我diff以前创建补丁文件时,/project/config.mk已正确完成,但两个符号链接出现了一些问题.它们都被视为新文件,差异部分是config.mk文件的全部内容.我试图找到一个diff禁用跟随符号链接的选项,但没有这样的选项可用.任何建议表示赞赏.

作为Overbose的建议,我创建了这个脚本.有用.感谢大家抽出时间回答.

#!/bin/sh -v
ori_dir=$1
new_dir=$2
patch_file=./patch_file
if [ -f ${patch_file} ]
then
        rm ${patch_file}
fi
ori_files=`cd ${ori_dir} ; find ./ -type f ! -type l`
for i in ${ori_files} ; do 
        if [ -f ${ori_dir}/$i ] 
        then
                if [ -f ${new_dir}/$i ]
                then
                        diff -rup ${ori_dir}/$i ${new_dir}/$i >> ${patch_file}
                fi
        fi
done
Run Code Online (Sandbox Code Playgroud)

linux diff patch

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

diff ×2

linux ×1

patch ×1

shell ×1

unix ×1