首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从两个不同的目录中删除重复文件?

如何从两个不同的目录中删除重复文件?
EN

Unix & Linux用户
提问于 2020-08-09 18:00:43
回答 2查看 549关注 0票数 2

我想从两个目录中删除重复的文件。目录和文件的结构如下

代码语言:javascript
复制
    nijat@nijat-virtual-machine:~/mansoor$ mkdir dir1
    nijat@nijat-virtual-machine:~/mansoor$ mkdir dir2
    nijat@nijat-virtual-machine:~/mansoor$ ls
    dir1  dir2
    nijat@nijat-virtual-machine:~/mansoor$ cd dir1
    nijat@nijat-virtual-machine:~/mansoor/dir1$ touch myfile.txt
    nijat@nijat-virtual-machine:~/mansoor/dir1$ ls
    myfile.txt
    nijat@nijat-virtual-machine:~/mansoor/dir1$ cd ..
    nijat@nijat-virtual-machine:~/mansoor$ cd dir2
    nijat@nijat-virtual-machine:~/mansoor/dir2$ touch myfile.txt
    nijat@nijat-virtual-machine:~/mansoor/dir2$ ls
    myfile.txt

我尝试从dir1dir2中删除重复文件。为此,我编写了以下命令。

代码语言:javascript
复制
nijat@nijat-virtual-machine:~/mansoor$ fdupes -d dir1 -r dir2
[1] dir1/myfile.txt                     
[2] dir2/myfile.txt

Set 1 of 1, preserve files [1 - 2, all]: all

   [+] dir1/myfile.txt
   [+] dir2/myfile.txt

nijat@nijat-virtual-machine:~/mansoor$ fdupes -d dir1 -r dir2
[1] dir1/myfile.txt                     
[2] dir2/myfile.txt

Set 1 of 1, preserve files [1 - 2, all]: 2

   [+] dir1/myfile.txt
   [-] dir2/myfile.txt

nijat@nijat-virtual-machine:~/mansoor$ cd dir1
nijat@nijat-virtual-machine:~/mansoor/dir1$ ls
myfile.txt
nijat@nijat-virtual-machine:~/mansoor/dir1$ cd ..
nijat@nijat-virtual-machine:~/mansoor$ cd dir2
nijat@nijat-virtual-machine:~/mansoor/dir2$ ls
nijat@nijat-virtual-machine:~/mansoor/dir2$ 

但问题是,我不知道要从两个目录中删除两个文件,必须选择什么选项。

代码语言:javascript
复制
Set 1 of 1, preserve files [1 - 2, all]:

我尝试了不同的选择,例如,我给所有的删除所有的文件,但什么都没有发生。当我选择1时,它会从dir1中删除该文件,但是该文件将保留在dir2中,如果选择2,该文件将从dir2中删除,但不会从dir1中删除。

我也试图删除两个目录中的两个文件,而不问我。我使用以下命令

代码语言:javascript
复制
  nijat@nijat-virtual-machine:~/mansoor$ fdupes -dN dir1 -r dir2
                                        
   [+] dir1/myfile.txt
   [-] dir2/myfile.txt

nijat@nijat-virtual-machine:~/mansoor$ cd dir2
nijat@nijat-virtual-machine:~/mansoor/dir2$ ls
nijat@nijat-virtual-machine:~/mansoor/dir2$ cd ..
nijat@nijat-virtual-machine:~/mansoor$ cd dir1
nijat@nijat-virtual-machine:~/mansoor/dir1$ ls
myfile.txt

如您所见,我的文件仍然存在于dir1中。请帮助我这一点,我只是想删除两个文件在同一时间从两个目录没有确认。

EN

回答 2

Unix & Linux用户

发布于 2020-08-09 18:59:34

您误解了fdupes中的提示符:“保存”意味着保存该文件。

您使用的工具不打算同时删除/所有重复项(这很有意义--通常您不想丢失信息)

来自man (1) fdupes

-d --删除要保存的文件的提示用户,删除所有其他文件(见下面的警告) -N --当与--删除一起使用时,保留每个重复项中的第一个文件,并在不提示用户的情况下删除其他文件。

票数 0
EN

Unix & Linux用户

发布于 2020-08-10 06:33:44

我从来没有听说过一个工具可以从两个目录中删除两个文件--就像guntbert在他的回答中说的那样,目标是在减少空间的同时不丢失信息。

Buf你对前一个答案的评论表明这就是你想要的。有一种方法:

代码语言:javascript
复制
find dir1 dir2 -type f -print0 | xargs -0 md5sum | sort | uniq -w32 -D | cut -c35-

此命令只生成一个文件列表;它并不实际删除它们。添加| xargs -o -d '\n' rm (假设Linux)来删除它们。当然,请先做测试。

出于好奇,你为什么要只删除重复的文件(包括原件),而不删除不重复的文件?尽管我可能会尝试,但我无法为这个有点不寻常的需求提供一个用例。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/603658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档