我有两个文件,all.txt(525,953,272 条记录)和subset.txt(525,298,281 条记录)。每条记录只不过是一个 17 位的 ASCII 整数。两个文件都已排序,每个文件中的重复记录已被删除。subset.txt 中的每个值也存在于all.txt 中。我希望能够找到的记录全部.txt不在subset.txt。
我试图diff在这两个文件之间运行 a ,认为它会写出all.txt 中的行,但不是subset.txt 中的行。该机器有64GB的内存。在diff已经运行了一个半小时,目前已获得有关内存的75%。
任何人都可以推测可能会发生什么,以及是否有论据diff可能会有所帮助?这难道不是diff我应该做的,我应该使用不同的方法吗?
寻找一种方法来递归搜索包含多行字符串的所有文件的存储库并返回包含它的文件名。该段落只是一个大约 30 行的标题。所以我知道pcregrep可以做多行搜索。但是你需要把整个表达式放进去。因为这是我要搜索的一个很长的段落,我想把它放在变量中,然后对那个变量做一个 grep 。所以基本上它会find . -name "*.[ch]" | xargs pcregrep -M $paragraph但是这不起作用任何人都可以指出我正确的方向。
我正处于 shell 脚本等的开始阶段,并且有点难以找到为命令的重复输出着色的正确方法,类似于 watch 命令中的 -d 选项。
我想看看 lsof 和其他一些命令的变化。这意味着,我只希望更改的/新行为红色(而不是用白色背景突出显示并突出显示以下所有行)。有没有一种优雅的方法可以使用 diff 或任何其他命令来完成它?
示例:红线表示通过 SSH 建立的新连接。
(我知道,我可以在这里用 GREP 建立 ESTABLISHED,但并不是我想看的每个命令都会给我一个要搜索的关键字。所以我必须在输出中寻找新的/更改的行。)
我有一个包含文本文件的子文件夹的文件夹。
我时不时地运行一个脚本来制作该文件夹树的副本,然后创建一个包含新信息的新文件夹。
之后,有了旧版本和新版本,我运行 diff 以了解旧版本和新版本之间发生了什么变化,将输出发送到文件:
diff myFiler.old myFolder > diff_report.txt
Run Code Online (Sandbox Code Playgroud)
问题是。
- 如何查看 diff_report.txt 语法的颜色?
我并不是要像 git 使用 diff 时那样查看实际输出的颜色,而是使用这种语法着色来查看已保存到文件中的 diff 输出。
假设我有两个文件夹:before和after.
./before:
bash
./after:
bash
Run Code Online (Sandbox Code Playgroud)
的bash在before从文件夹不同bash的after。
使用bsdiff或类似的程序,有没有办法在两个文件夹之间创建二进制补丁?该程序不必支持 Windows。目录中的新文件也after需要包含在补丁文件中。
我不想after整体打包的原因是为了最小化补丁的大小。
更新:再次阅读本文,我发现这不是一个好问题。我想我应该问一些诸如可靠程度之类的问题rsync -aP --dry-run /origin /dest吗?. 当然,最可靠的方法并不是检查数据完整性的最快方法。
由于答案温和地解释了 rsync 对这些选项(以及一些失败场景)的作用并告诉了 diff 的作用,我将保持这个问题不变。
问题是:我复制了一个 340 GB 的文件夹,我想检查复制是否成功。该副本是使用rsync -aP /origin /dest从一个 ext4 分区到另一个 ext4 分区的。
我知道使用diff -r /origin /dest来比较源目录和目标目录需要非常(非常)很长时间。然后我想我可以rsync -aP --dry-run /origin /dest用来比较目录...花了5 秒(!)。(我time在命令之前使用过测量它。)
由于rsync -aP只显示了“发送增量文件列表”消息,没有别的(它会列出不同的文件或未复制的文件),我得出结论,这是检查两个目录是否相同的最快和最可靠的方法。(只要rsync -a使用选项,文件和目录在所有者、权限和修改时间方面也是相同的......-P暗示--progress。)
我对吗?是rsync -aP --dry-run /origin /dest验证目录是否相同的最快和最可靠的方法?
是否有可能我们可以比较两个 xml 文件并确定它们之间的差异。然后将输出放入输出新文件。
我使用过,diff xml1 xml2但这只给了我线条上的差异,我正在寻找的是与树级别的差异。
我想比较两个文件——“orienv”和“currenv”,使用命令diff.
我创建这两个文件的方式如下:
创建“currenv”文件
$cat /proc/1/environ >> currenv
$cat /pcoc/279/environ >> currenv
$cat /proc/295/environ >> currenv
//295 is the pid of the current console
Run Code Online (Sandbox Code Playgroud)创建 orienv 文件
$printenv > orienv
Run Code Online (Sandbox Code Playgroud)然后我打电话diff如下
diff -u orienv currenv
Run Code Online (Sandbox Code Playgroud)
并得到以下输出
二进制文件 orienv 和 currenv 不同
我期待diff带有标志的正常输出-u(例如,在输出中它显示了hunks的差异,指示哪个文件具有另一个文件没有的信息。
什么地方出了错?
我有下一个问题:
目录Example1包含三个文件:Example1,Things和Pictures.
目录Example2包含三个文件:Example2,Example3和Pictures.
我需要一个仅显示与目录名称匹配的文件的列表,即:Example1和Example2. 我尝试过 diff、find、locate 和 ls ……但我没有取得任何成就。
假设我有两个文件,内容如下:
$ cat File1.txt
Apple
orange
watermelon
avocado
lime
Run Code Online (Sandbox Code Playgroud)
$ cat File2.txt
orange
Apple
lime
watermelon
avocado
Run Code Online (Sandbox Code Playgroud)
基本上没有区别,因为两者具有相同的值。我正在使用diff命令:
diff File1.txt File2.txt
Run Code Online (Sandbox Code Playgroud)
它显示文件不同,因为值放错了位置,在我的情况下,我要求它不应该显示差异。还有什么其他方法可以实现这一目标,欢迎提出任何建议。