両方のフォルダに3つのファイルがあります。ファイル名が指定され、a.txt
フォルダにb.txt
配置されます。アプリを使用しました。c.txt
A
B
フルファイルミニコンパレータフォルダを比較し、その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=
名前に改行が含まれています。