是否可以使用 rsync 比较两个目录并仅打印差异?有一个试运行选项,但是当我将详细程度增加到一定程度时,会显示每个比较的文件。
ls -alR并且diff在这里没有选择,因为源中有硬链接使每一行都不同。(当然,我可以用 perl 删除此列。)
和
diff -r
Run Code Online (Sandbox Code Playgroud)
我可以做这个任务,但是它需要很长时间,因为diff检查文件的内容。
我想要一些东西来确定两个文件在大小、上次修改等方面是相同的。但是没有一点一点地检查文件(例如一个视频需要很长时间)。
有没有其他办法?
在处理 jpg 或 h264 压缩文件时,像 fdupes 这样的工具是荒谬的矫枉过正。两个具有完全相同文件大小的此类文件已经很好地表明它们是相同的。
除此之外,如果提取并比较 16 个等距的 16 字节块,并且它们也相同,那么就有足够的证据让我假设它们是相同的。有这样的事吗?
(顺便说一句,我知道文件大小本身可能是一个相当不可靠的指标,因为可以选择压缩到某些目标大小,例如 1MB 或 1 CD/DVD。如果在许多文件上使用相同的目标大小,这是相当合理的一些不同的文件将具有完全相同的大小。)
我试图通过简单地将数据转储到文本文件中来节省空间,同时进行“哑”备份。我的备份脚本每天执行一次,如下所示:
"$name"。gzip "$name". 否则,rm "$name"。现在我想添加一个额外的步骤来删除文件,如果相同的数据在前一天也可用(并创建符号链接或硬链接)。
起初我想使用md5sum "$name",但这不起作用,因为我还存储了文件名和创建日期。
是否gzip可以选择比较两个 gzipped 文件并告诉我它们是否相等?如果gzip没有这样的选择,还有其他方法可以实现我的目标吗?
我有两个文件,它们基本上包含十六进制格式的内存转储。目前我使用 diff 来查看文件是否不同以及差异在哪里。然而,当试图确定差异的确切位置(即内存地址)时,这可能会产生误导。考虑以下并排显示两个文件的示例。
file1: file2:
0001 | 0001
ABCD | FFFF
1234 | ABCD
FFFF | 1234
Run Code Online (Sandbox Code Playgroud)
现在diff -u将显示一个插入和一个删除,尽管两个文件之间的 3 行(内存位置)发生了变化:
0001
+FFFF
ABCD
1234
-FFFF
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来比较这两个文件,以便每行仅与另一个文件中的同一行(就行编号而言)进行比较?因此,在此示例中,它应该报告最后 3 行已更改,以及从file1和更改的行file2。输出不必是 diff 样式,但如果它可以着色会很酷(目前我diff -u使用颜色为输出着色,sed以便可以轻松适应)。
我有两个文件。
A0001 C001
B0003 C896
A0024 C234
.
B1542 C231
.
upto 28412 such lines
Run Code Online (Sandbox Code Playgroud)
A0001
A0024
B1542
.
.
and 12000 such lines.
Run Code Online (Sandbox Code Playgroud)
我想将文件 2 与文件 1 进行比较并存储文件 1 中的匹配行。我尝试过 Perl 和 Bash,但似乎都没有工作。
我最近尝试的事情是这样的:
for (@q) # after storing contents of second file in an array
{
$line =`cat File1 | grep $_`; #directly calling File 1 from bash
print $line;
}
Run Code Online (Sandbox Code Playgroud)
但它失败了。
我试图找到一种方法来确定一个文本文件是否是另一个文件的子集。
例如:
foo
bar
Run Code Online (Sandbox Code Playgroud)
是一个子集
foo
bar
pluto
Run Code Online (Sandbox Code Playgroud)
尽管:
foo
pluto
Run Code Online (Sandbox Code Playgroud)
和
foo
bar
Run Code Online (Sandbox Code Playgroud)
不是彼此的子集...
有没有办法用命令来做到这一点?
此检查必须是交叉检查,并且必须返回:
file1 subset of file2 : True
file2 subset of file1 : True
otherwise : False
Run Code Online (Sandbox Code Playgroud) 我有两个大小分别为 124665 和 124858(以字节为单位)的文件,我想检查 file1 是否是 file2 的前缀。
如何在shell脚本中找到匹配数据的两个文件并在shell中的另一个文件中重复存储数据?
#!/bin/bash
file1="/home/vekomy/santhosh/bigfiles.txt"
file2="/home/vekomy/santhosh/bigfile2.txt"
while read -r $file1; do
while read -r $file2 ;do
if [$file1==$file2] ; then
echo "two files are same"
else
echo "two files content different"
fi
done
done
Run Code Online (Sandbox Code Playgroud)
我写了代码,但没有用。怎么写?
我有两个文件具有相同的数据但在不同的行中。
文件 1:
<Identities>
<Identity>
<Id>048206031415072010Comcast.USR8JR</Id>
<UID>ccp_test_79</UID>
<DisplayName>JOSH CCP</DisplayName>
<FirstName>JOSH</FirstName>
<LastName>CCP</LastName>
<Role>P</Role>
<LoginStatus>C</LoginStatus>
</Identity>
<Identity>
<Id>089612381523032011Comcast.USR1JR</Id>
<UID>94701_account1</UID>
<DisplayName>account1</DisplayName>
<FirstName>account1</FirstName>
<LastName>94701</LastName>
<Role>S</Role>
<LoginStatus>C</LoginStatus>
</Identity>
</Identities>
Run Code Online (Sandbox Code Playgroud)
文件 2:
<Identities>
<Identity>
<Id>089612381523032011Comcast.USR1JR</Id>
<UID>94701_account1</UID>
<DisplayName>account1</DisplayName>
<FirstName>account1</FirstName>
<LastName>94701</LastName>
<Role>S</Role>
<LoginStatus>C</LoginStatus>
</Identity>
<Identity>
<Id>048206031415072010Comcast.USR8JR</Id>
<UID>ccp_test_79</UID>
<DisplayName>JOSH CCP</DisplayName>
<FirstName>JOSH</FirstName>
<LastName>CCP</LastName>
<Role>P</Role>
<LoginStatus>C</LoginStatus>
</Identity>
</Identities>
Run Code Online (Sandbox Code Playgroud)
如果我使用diff file1 file2命令,我会得到以下响应:
1,10d0
< <Identities>
< <Identity>
< <Id>048206031415072010Comcast.USR8JR</Id>
< <UID>ccp_test_79</UID>
< <DisplayName>JOSH CCP</DisplayName>
< <FirstName>JOSH</FirstName>
< <LastName>CCP</LastName>
< <Role>P</Role>
< <LoginStatus>C</LoginStatus>
< </Identity>
20a11,20
> <Identities>
> <Identity>
> …Run Code Online (Sandbox Code Playgroud)