ログに出力として保存された同じファイルを削除します。

ログに出力として保存された同じファイルを削除します。

両方のフォルダに3つのファイルがあります。ファイル名が指定され、a.txtフォルダにb.txt配置されます。アプリを使用しました。c.txtABフルファイルミニコンパレータフォルダを比較し、そのAフォルダにログを保存します。

ログには次のテキストがあります。

Different: A=/sdcard/A/a.txt B=/sdcard/B/a.txt
Same: A=/sdcard/A/b.txt B=/sdcard/B/b.txt
Different: A=/sdcard/A/c.txt B=/sdcard/B/c.txt

sedおよびrm/または他のコマンドを使用して「同じ」ファイルを永久に削除/削除するにはどうすればよいですか?

ベストアンサー1

あなたは

$ tree
.
|-- A
|   |-- a.txt
|   |-- b.txt
|   `-- c.txt
`-- B
    |-- a.txt
    |-- b.txt
    `-- c.txt

2 directories, 6 files

使用fdupes:

$ fdupes -1 A B
A/b.txt B/b.txt

fdupesファイルの内容に基づいて重複を検出します。この-1フラグを使用すると、各冗長セットのファイル名が1行に出力されます。ここでは、b.txtファイルが同じものとして検出されます。

以下を使用して重複項目を削除できますfdupes

$ fdupes --delete A B
[1] A/b.txt
[2] B/b.txt

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

   [+] A/b.txt
   [-] B/b.txt

どちらのファイル(または両方のファイル)を保持するかを対話的に尋ねます。1削除A/b.txtしてもファイルが保持されるように作成しました。B/b.txt

fdupes()マニュアルを参照してくださいman fdupes。システムにインストールされていない場合は、パッケージマネージャを使用してインストールします。インタラクティブなプロンプトなしでファイルを自動的に削除するようにすることもできますが、実行時には注意が必要です。ファイルを削除できるコマンドを実行する前に、必ずデータをバックアップしてください。

少なくとも1つのfdupesレプリカは常に維持されます。すべての重複エントリを削除するには、fdupes同様の質問に対するSuperUserの回答に記載されているこのパッチバージョンに興味があるかもしれません。https://superuser.com/a/947770/96962(私はこれをテストしていません)。


ログファイルを解析するよりも使用を推奨するのは、fdupesテキスト文書に含まれるファイル名が正しく解析するのが難しいからです。おそらくそうではありません。いつも難しいかもしれませんが(この特定の例では簡単です)、Unixではファイル名とディレクトリ名にスペースと改行を許可することに注意してください。これは技術的にというファイルがある可能性があります。

a.txt
Same: A=

名前に改行が含まれています。

おすすめ記事