如何在linux中比较删除两个目录中相同的文件?

How to delete the same files in the two directories with comparison in linux?

我想删除两个目录中的相同文件。 两者都有很多同名文件。如果两个文件相同,我想在第一个目录中删除。 我不确定 linux shell 是更好的选择还是 python 会更好。

  1. $HOME/bin
  2. $HOME/cin

在某些搜索中,有比较接近的答案。

find cin -type f -exec cmp '{}' "bin/{}" \;

但这不起作用,因为 find 的第一个输出,{} 包含 "cin/" 目录名称,例如 "cin/file1"。所以第二个 "bin/{}" 有 "bin/cin/file1"。然后出现比较错误

cmp: bin/cin/file1: No such file or directory

如何比较cin/file1和bin/file1?

您可以使用这个 find 命令:

find cin -type f -exec bash -c 'f="${1#cin/}"; cmp "cin/$f" "bin/$f"' _ {} \;

它对 cin 目录中的所有常规文件执行 bash -c 中的命令。

上层目录被bashism${1#...}删除,变量f设置为相对路径