标签: diff

Bash如何在目录中查找内容相同的文件

如何使用diff脚本中的命令显示目录中所有相同内容的文件?也许我应该提供更多细节。

该脚本应该在指定的目录和子目录中找到相同的文件,并将它们按文件大小的降序排列显示在终端中。

bash diff

0
推荐指数
1
解决办法
2288
查看次数

两个目录之间的差异

下面是问题:假设在 DirA 中我有这些文件:

file1
file2
file3
file4
Run Code Online (Sandbox Code Playgroud)

在 DirB 中我有以下文件:

file1
file2
file3
Run Code Online (Sandbox Code Playgroud)

现在,如果我必须制作一个脚本来告诉我两个目录之间的差异(在本例中,dirB 中缺少 file4),并且还将文件复制到 DirB 中,那么命令是什么?

unix directory bash diff traversal

0
推荐指数
1
解决办法
477
查看次数

获取以数字开头的行

我有一个 bash 命令diff file1 file2,相应的输出类似于:

74,100c74,100
<         some text
Run Code Online (Sandbox Code Playgroud)

这只是一个小子集,当然,diff输出中的行开头变化很大(我知道>, <, -, \和 chars from 1to 9,但可能还有其他,我不太确定)。1我只想要以从到 的数字开头的输出行9(不是0,因为我只关心发生更改的位置,并且行号不会以 开头0)。

因此,如果我diff使用该命令进行管道传输,输出应该是:

74,100c74,100
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?谢谢...

regex diff awk grep

0
推荐指数
1
解决办法
1856
查看次数

如何比较(比较)两个顺序无关紧要的大型 CSV 文件

我正在努力比较(比较)2 个大型 CSV 文件。

  • 行的顺序并不重要
  • 我不需要打印差异或任何内容,只需打印对或错。

例如:

文件1

a,b,c,d
e,f,g,h
i,j,k,l
Run Code Online (Sandbox Code Playgroud)

文件2

a,b,c,d
i,j,k,l
e,f,g,h
Run Code Online (Sandbox Code Playgroud)

上面应该通过比较,即使行的顺序不同,内容也是相同的。

如果内容不同、列值不匹配或者某一行存在于另一行中,等等,则比较应该失败。

我遇到的最大问题是文件非常大,并且没有可排序的键列。文件有 14 到 3000 万行,大约 10 到 15 列。未排序的原始数据转储约为 1GB 的 csv 文件。

现在我正在尝试使用下面的代码对文件进行排序和“比较”。问题是“排序”并不总是有效。对于较小的文件和较少的行,排序和比较可以工作,但它似乎不适用于非常大的文件。

此外,排序会显着增加操作时间;理想情况下,我想避免排序,只是比较忽略排序顺序,但我不知道该怎么做。

filecmm、difflib 和我尝试过的其他一些函数都需要预先排序的文件。

我现在正在执行 Python 合并排序,但正如我所说,排序不一定适用于大量行,我希望有更好的比较方法。

这是Python的归并排序函数:

def batch_sort(self, input, output, key=None, buffer_size=32000, tempdirs=None):
                if isinstance(tempdirs, str):
                        tempdirs = tempdirs.split(",")

                if tempdirs is None:
                        tempdirs = []
                if not tempdirs:
                        tempdirs.append(gettempdir())

                chunks = []
                try:
                        with open(input,'rb',64*1024) as input_file:
                                input_iterator = iter(input_file)
                                for tempdir in cycle(tempdirs):
                                        current_chunk = list(islice(input_iterator,buffer_size)) …
Run Code Online (Sandbox Code Playgroud)

python diff compare large-files

0
推荐指数
1
解决办法
659
查看次数

提取每两个连续元素之间的差异

我有一个数值列表,我需要计算一个新列表,该列表将由原始列表中每两个连续元素的差值组成。我有这个代码:

wss <- (nrow(dat)-1)*sum(apply(dat,2,var))
  for (i in 2:15) wss[i] <- sum(kmeans(dat,
                                       centers=i)$withinss)
  plot(1:15, wss, type="b", xlab="Number of Clusters",
       ylab="Within groups sum of squares")

  # choose optimal k where sos derivative is large for the first time
diff <- lapply(wss, diff)
Run Code Online (Sandbox Code Playgroud)

所以我原来的列表是 wss

> dput(wss)
c(4155212952468.46, 4021505707879.36, 4017356406677.14, 4015231535838.63, 
4013350949497.91, 17067610483.738, 17023281391.9182, 4013258218594.64, 
14454798910.9291, 16989216167.6064, 14860266330.575, 14480295584.8302, 
14506662229.3596, 14289181733.1553, 14283121461.9347)
Run Code Online (Sandbox Code Playgroud)

在结果列表中,我预计第一个元素将是 4155212952468.46 - 4021505707879.36 第二个元素将是 4021505707879.36 - 4017356406677.14 等等任何帮助表示赞赏

diff r

-2
推荐指数
1
解决办法
3835
查看次数

让git打印两个给定提交之间的统一差异

另外,如何参考提交?希望我不必键入那些可怕的哈希字符串!

git diff

-3
推荐指数
1
解决办法
586
查看次数

标签 统计

diff ×6

bash ×2

awk ×1

compare ×1

directory ×1

git ×1

grep ×1

large-files ×1

python ×1

r ×1

regex ×1

traversal ×1

unix ×1