我想从两个目录中删除重复的文件。目录和文件的结构如下
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我尝试从dir1和dir2中删除重复文件。为此,我编写了以下命令。
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$ 但问题是,我不知道要从两个目录中删除两个文件,必须选择什么选项。
Set 1 of 1, preserve files [1 - 2, all]:我尝试了不同的选择,例如,我给所有的删除所有的文件,但什么都没有发生。当我选择1时,它会从dir1中删除该文件,但是该文件将保留在dir2中,如果选择2,该文件将从dir2中删除,但不会从dir1中删除。
我也试图删除两个目录中的两个文件,而不问我。我使用以下命令
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中。请帮助我这一点,我只是想删除两个文件在同一时间从两个目录没有确认。
发布于 2020-08-09 18:59:34
您误解了fdupes中的提示符:“保存”意味着保存该文件。
您使用的工具不打算同时删除/所有重复项(这很有意义--通常您不想丢失信息)
来自man (1) fdupes:
-d --删除要保存的文件的提示用户,删除所有其他文件(见下面的警告) -N --当与--删除一起使用时,保留每个重复项中的第一个文件,并在不提示用户的情况下删除其他文件。
发布于 2020-08-10 06:33:44
我从来没有听说过一个工具可以从两个目录中删除两个文件--就像guntbert在他的回答中说的那样,目标是在减少空间的同时不丢失信息。
Buf你对前一个答案的评论表明这就是你想要的。有一种方法:
find dir1 dir2 -type f -print0 | xargs -0 md5sum | sort | uniq -w32 -D | cut -c35-此命令只生成一个文件列表;它并不实际删除它们。添加| xargs -o -d '\n' rm (假设Linux)来删除它们。当然,请先做测试。
出于好奇,你为什么要只删除重复的文件(包括原件),而不删除不重复的文件?尽管我可能会尝试,但我无法为这个有点不寻常的需求提供一个用例。
https://unix.stackexchange.com/questions/603658
复制相似问题