删除一个目录中的文件,这些文件也在另一个目录中

n0p*_*0pe 7 directory cp shell-script files

我用这个复制了一个目录:

cp -r dir/ ../../
Run Code Online (Sandbox Code Playgroud)

想也没想就发现是复制了dir而不是dir上面目录的内容。现在我有一堆文件需要删除,以便我可以cp正确地重做。如果我错误地复制了所有文件,如果它们不匹配任何特定内容,我该如何删除它们?

Sté*_*nez 8

好的,这与klapaucius 的回答基本相同。(如果cp覆盖了一些现有文件,它不会修复任何损坏。)

假设您在源目录中(在 中dir)。这个命令:

find . -type f -exec echo '{}' ';'
Run Code Online (Sandbox Code Playgroud)

将列出目录中存在的所有文件(递归)dir(非常像-print)。该-type f选项用于防止列出子目录。

所以,如果你使用:

find dir -type f -exec echo '../../../{}' ';'
Run Code Online (Sandbox Code Playgroud)

这应该列出目标目录中的相应文件(副本)。

现在,如果列表正确,您将能够使用以下方法删除副本:

find dir -type f -exec rm -- '../../../{}' ';'
Run Code Online (Sandbox Code Playgroud)

至于修剪来自cp……嗯……的剩余空目录