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

标签 linux shell command-line terminal 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

我收到以下消息:

Files ./dir_one/data.txt ./dir_two/data.txt are identical.

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

问题是我想自动执行删除过程。我不想在命令行输入 rm。是否有任何可能的方法来做到这一点 - 例如,在脚本中?

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

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

最佳答案

你需要 fdupes。

fdupes -r /some/directory/path > /some/directory/path/fdupes.log

尽情享受吧!

关于linux - 如何比较文本文件并删除重复项(Linux 终端命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18475276/

相关文章:

c++ - LD_LIBRARY_PATH : Cannot open shared object file

c - Linux UDP 套接字/端口重用

Codeblocks 在 Linux Mint 中不打印任何内容

shell - 在 shell 脚本中更改父 shell 的路径变量

linux - 递归复制和重命名

swift - 从命令行运行简单的 swift 文件时访问 LLDB/设置断点

ruby - 我可以确定 RubyGems 将哪些路径添加到加载路径以使我的命令行应用程序正常工作吗?

mysql - 优化 mysql my.cnf - 内存使用率高到危险

linux - 符号链接(symbolic link)检查 - Linux Bash 脚本

linux - 调用 gdb 时是否可以从命令行参数中获取 'set print thread-events off'?