如何比较文本文件和删除重复项(Linux终端命令)

Gra*_*lsh 2 linux shell terminal command-line ubuntu-12.04

假设我有两个目录dir_onedir_two。在每个目录中,我都有一个名为data.txt的文本文件。换句话说,在两个单独的目录中有两个文件:/dir_one/data.txt/dir_one/data.txt尽管文件名相似,但是两个文本文件的内容可能相同也可能不同!

我想做的是这样的:

  1. 比较文本文件的内容:./dir_one/data.txt和./dir_one/data.txt
  2. 如果内容相同,请删除其中一个文本文件。

我在命令终端输入了以下内容:

diff -qrs ./dir_one/data.txt ./dir_two/data.txt
Run Code Online (Sandbox Code Playgroud)

并且我收到以下消息:

Files ./dir_one/data.txt ./dir_two/data.txt are identical.
Run Code Online (Sandbox Code Playgroud)

现在,我知道两个文本文件是相同的,我可以使用rm命令删除其中一个。到目前为止,一切都很好。然而...

问题是我要自动执行删除过程。我不想rm在命令行中输入。有没有办法做到这一点-例如在脚本中?

我还想知道如何将一个目录中的大量文本文件与另一个目录中的大量文本文件进行比较。同样,对于发现相同的任何文件,应删除其中一个重复项。这可能吗?

我发现了类似的问题,但是没有一个关于自动删除重复文件之一的问题。请注意,我正在使用ubuntu 12.04。

小智 5

您需要fdupes。

fdupes -r /some/directory/path > /some/directory/path/fdupes.log
Run Code Online (Sandbox Code Playgroud)

请享用!