我有两个文件:
oldlist- 这包含文件列表和每个文件的 md5 哈希。这是一年前生成的。newlist- 这还包含文件列表和每个文件的 md5 哈希值。但是,一些文件已更改(例如,它们的 md5 哈希值不同)并添加了一些新文件。我想查看oldlist和之间的所有差异newlist,但我想忽略oldlist.
也就是说,我不关心新文件。我只想比较每个旧文件的 md5 哈希值,以便我可以查看去年是否有任何文件发生了更改。
我有两个文件夹:
我的朋友有一份 ORIGINAL/。我想生成 MY_CHANGES.tgz - 与 ORIGINAL/ 相比,它应该只包含来自 ORIGINAL_AND_MY_CHANGES/ 的新文件/更改文件。所以我的朋友可以将它解压到他的 ORIGINAL/ 副本中并获得 ORIGINAL_AND_MY_CHANGES/。我怎样才能做到这一点?
PS 我试过了,diff但它不能保存二进制数据,而且rsync --link-dest——它会生成在存档中无用的硬链接。
PPS 在我的情况下,不能使用修改时间来决定更改了哪个文件。
我想在 diff 的输出中获得正确的行数(特别是使用-y和--suppress-common-lines选项)。使用简单的wc -l做不工作,因为如果这两个文件没有结束换行符和他们的最后一行是不同的wc -l将不计入最后一行。
有没有简单有效的解决方案来避免这种情况?
例如,如果您有文件“a”:
a
b
c
d #no newline here
Run Code Online (Sandbox Code Playgroud)
和“b”:
a
b
c
D #no newline here
Run Code Online (Sandbox Code Playgroud)
输出是:
$ diff -y --suppress-common-lines a b | wc -l
0
Run Code Online (Sandbox Code Playgroud)
这显然是不正确的,因为diff 确实输出了一行。
我有两个文件paper.tex,paper_suggested_changes.tex后者是前者的修改版本,并进行了更正。
我需要查看这两个文件并选择接受或拒绝哪些更改,我将如何处理?
看起来-u可以接受额外的数字参数,但我没有安静地拿到手册,
它说,
-u, -U NUM, --unified[=NUM]
output NUM (default 3) lines of unified context
Run Code Online (Sandbox Code Playgroud)
有人请举个例子吗?
我找不到一个工作的。
我正在尝试使用 diff 工具创建补丁文件。但面临一个问题。我正在做的方法如下。
我创建了一个名为 a 的目录并将原始文件放入其中。
a/original_file.c
Run Code Online (Sandbox Code Playgroud)
现在我创建了另一个名为 b 的目录,并将具有修改内容的相同文件放入其中。
b/original_file.c
Run Code Online (Sandbox Code Playgroud)
现在b/original_file.c我从互联网上复制的文件内容并将其放入一些文本编辑器中。
给出 command: 后diff -Naur a b > patch_file.patch,文件patch_file.patch被生成并且它有一些不需要的更改(它与缩进有关)。
例如:
return mg_nw (MG_READY_NOY, &rmsg, seqnr,
- sizeof (struct mg_rdy_notify));
+ sizeof (struct mg_rdy_notify));
Run Code Online (Sandbox Code Playgroud)
现在您可以看到与缩进相关的更改,其中sizeof (struct mg_rdy_notify))被替换为相同sizeof (struct mg_rdy_notify))的缩进基础,这是我们不想要的。
我有两个文件名相似但扩展名不同的目录。下面是一个例子:
DIR1:
- IN89284.wav
- OUT9920.wav
DIR2:
- IN89284.mp3
- OUT9920.mp3
Run Code Online (Sandbox Code Playgroud)
我想比较这些目录但忽略文件扩展名,因此在这种情况下它们将相同。我怎样才能做到这一点?我想我必须遍历第一个目录,修剪每个文件名(剪切扩展名),然后在第二个目录中搜索它。有没有更好的方法来做到这一点?
我最初生成两个包含 URL 列表的文件——我将它们称为old和new。我想比较这两个文件,如果文件中有任何new不在文件中的URL old,我希望将它们显示在extra_urls文件中。
现在,我已经阅读了一些有关使用该diff命令的内容,但据我所知,这也分析了信息的顺序。我不希望订单对输出产生任何影响。我只想将额外的 URLnew打印到extra_urls文件中,无论它们在其他两个文件中的任何一个中放置的顺序如何。
我怎样才能做到这一点?
在初学者的Bash 指南(第3.2.1.2 节。局部变量)中有一个示例命令,它应该列出所有不在环境变量中的局部变量,或者我认为:
diff set.sorted printenv.sorted | grep "<" | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)
除了*.sorted部分,我相信我了解有关此命令的所有内容。此外,这个命令在我的 Bash 上不起作用,特别是因为上述元素。这是响应(这是No such file or directory的波兰语版本):
diff: set.sorted: Nie ma takiego pliku ani katalogu
diff: printenv.sorted: Nie ma takiego pliku ani katalogu
Run Code Online (Sandbox Code Playgroud)
值得注意的是,我使用的是 Ubuntu 14.04,其默认安装几乎没有变化。
正因为如此,我无法在我的 Bash shell 中分析这个命令,我也无法在谷歌上找到任何关于这个的东西,除了我从中获取这个命令的教程。
我将不胜感激,因为我以前从未遇到过这样的表达方式。
我只想使用 Diff 来检查文件和目录是否在两个位置存在相同,但不比较文件本身的内容,因为这就是我所需要的,而常规 Diff 只需要太长时间来处理数据量。我该怎么办?是否有其他一些 Debian 标准工具可以实现这一点?