2つの異なるディレクトリから重複ファイルを削除する方法は?

2つの異なるディレクトリから重複ファイルを削除する方法は?

両方のディレクトリから重複ファイルを削除したいと思います。ディレクトリとファイル構造は次のとおりです。

    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$ 

しかし、問題は、両方のディレクトリからこれらの2つのファイルを削除するためにどのオプションを選択する必要があるのか​​わからないことです。

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。この問題を解決するのに役立ちます。確認せずに両方のディレクトリから両方のファイルを削除したいと思います。

ベストアンサー1

プロンプトを誤解しましたfdupes。 「Keep」はファイルを保持するという意味です。

あなたが使用しているツールは削除用に設計されていません。両方/みんな重複(これは意味があります - 一般的に情報を失いたくありません)

からman (1) fdupes

-d --delete
         prompt user for files to preserve, deleting all others (see CAVEATS below)

-N --noprompt
         when  used together with --delete, 
         preserve the first file in each set of duplicates 
         and delete the others without prompting the user

おすすめ記事