GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで重複ファイルを見つけて削除する方法

設定ファイルや古いファイルは、編集や変更を行う前に常にハードディスクのどこかにバックアップするので、誤って何か間違ったことをした場合でも、バックアップから復元できます。しかし、問題は、それらのファイルをクリーンアップするのを忘れてしまい、一定期間後にハードディスクが多数の重複ファイルでいっぱいになることです。古いファイルをきれいにするのが面倒か、重要なファイルを削除するのではないかと心配しています。私のような人で、異なるバックアップディレクトリにある同じファイルの複数のコピーに圧倒されている場合は、Unixライクなオペレーティングシステムで以下のツールを使用して、重複するファイルを見つけて削除できます。

注意事項:

重複ファイルを削除する際はご注意ください。注意しないと、偶発的なデータの損失につながります 。これらのツールを使用するときは、特に注意を払うことをお勧めします。

Linuxで重複ファイルを見つけて削除する

このガイドでは、3つのユーティリティについて説明します。

  1. Rdfind、
  2. Fdupes、
  3. FSlint。

これらの3つのユーティリティは無料のオープンソースであり、ほとんどのUnixライクなオペレーティングシステムで動作します。

1。 Rdfind

Rdfind rの略です 冗長なd ata検索 は、ディレクトリおよびサブディレクトリ間および/または内部で重複ファイルを検索するための無料のオープンソースユーティリティです。ファイル名ではなく、コンテンツに基づいてファイルを比較します。 Rdfindはランキングを使用します 元のファイルと重複ファイルを分類するアルゴリズム。 2つ以上の等しいファイルがある場合、Rdfindは、どちらが元のファイルであるかを検出し、残りのファイルを重複と見なすのに十分賢いです。重複が見つかると、それらが報告されます。それらを削除するか、ハードリンクに置き換えるかを決定できます。 またはシンボリック(ソフト)リンク

Rdfindのインストール

RdfindはAURで利用できます 。したがって、 Yay などのAURヘルパープログラムを使用して、Archベースのシステムにインストールできます。 以下に示すように。

$ yay -S rdfind

Debian、Ubuntu、Linux Mintの場合:

$ sudo apt-get install rdfind

Fedoraの場合:

$ sudo dnf install rdfind

RHELでは、CentOS:

$ sudo yum install epel-release
$ sudo yum install rdfind

使用法

インストールしたら、ディレクトリパスとともにRdfindコマンドを実行するだけで、重複ファイルをスキャンできます。

$ rdfind ~/Downloads

Rdfindでディレクトリをスキャンする

上のスクリーンショットにあるように、Rdfindコマンドは〜/ Downloadsディレクトリをスキャンし、結果を results.txtという名前のファイルに保存します。 現在の作業ディレクトリにあります。重複する可能性のあるファイルの名前は、results.txtファイルで確認できます。

$ cat results.txt 
# Automatically generated
# duptype id depth size device inode priority name
DUPTYPE_FIRST_OCCURRENCE 1469 8 9 2050 15864884 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test5.regex
DUPTYPE_WITHIN_SAME_TREE -1469 8 9 2050 15864886 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test6.regex
[...]
DUPTYPE_FIRST_OCCURRENCE 13 0 403635 2050 15740257 1 /home/sk/Downloads/Hyperledger(1).pdf
DUPTYPE_WITHIN_SAME_TREE -13 0 403635 2050 15741071 1 /home/sk/Downloads/Hyperledger.pdf
# end of file

results.txtファイルを確認することで、重複を簡単に見つけることができます。必要に応じて、重複を手動で削除できます。

また、-ドライランを行うこともできます 何も変更せずに特定のディレクトリ内のすべての重複を検索し、ターミナルに要約を出力するオプション:

$ rdfind -dryrun true ~/Downloads

重複を見つけたら、ハードリンクまたはシンボリックリンクのいずれかに置き換えることができます。

すべての重複をハードリンクに置き換えるには、次のコマンドを実行します:

$ rdfind -makehardlinks true ~/Downloads

すべての重複をシンボリックリンク/ソフトリンクに置き換えるには、次のコマンドを実行します。

$ rdfind -makesymlinks true ~/Downloads

ディレクトリに空のファイルがいくつかあり、それらを無視したい場合があります。その場合は、 -ignoreemptyを使用します 以下のようなオプション。

$ rdfind -ignoreempty true ~/Downloads

古いファイルが不要になった場合は、ハードリンクまたはソフトリンクに置き換えるのではなく、重複するファイルを削除してください。

重複するものをすべて削除するには、次のコマンドを実行します。

$ rdfind -deleteduplicates true ~/Downloads

空のファイルを無視して、すべての重複ファイルとともに削除したくない場合は、次のコマンドを実行します。

$ rdfind -deleteduplicates true -ignoreempty false ~/Downloads

詳細については、ヘルプセクションを参照してください:

$ rdfind --help

そして、マニュアルページ:

$ man rdfind

推奨される読み物:

  • DuplicateFilesFixerを使用してAndroidから重複ファイルを削除する

2。 Fdupes

Fdupes は、指定されたディレクトリおよびサブディレクトリ内の重複ファイルを識別して削除するためのさらに別のコマンドラインユーティリティです。 Cで記述された無料のオープンソースユーティリティです。 プログラミング言語。 Fdupesは、ファイルサイズ、部分的なMD5署名、完全なMD5署名を比較し、最後に検証のためにバイトごとの比較を実行することによって、重複を識別します。

Rdfindユーティリティと同様に、Fdupesには、次のような操作を実行するための非常に少数のオプションが付属しています。

  • ディレクトリおよびサブディレクトリ内の重複ファイルを再帰的に検索します
  • 空のファイルと隠しファイルを検討対象から除外します
  • 重複のサイズを表示する
  • 重複が発生したらすぐに削除します
  • 所有者/グループまたは権限ビットが異なるファイルを重複として除外します
  • その他多数。

Fdupesのインストール

Fdupesは、ほとんどのLinuxディストリビューションのデフォルトのリポジトリで利用できます。

Arch Linuxと、Antergos、Manjaro Linuxなどのその亜種では、以下のようにPacmanを使用してインストールします。

$ sudo pacman -S fdupes

Debian、Ubuntu、Linux Mintの場合:

$ sudo apt-get install fdupes

Fedoraの場合:

$ sudo dnf install fdupes

RHELでは、CentOS:

$ sudo yum install epel-release
$ sudo yum install fdupes

使用法

Fdupesの使用法は非常に簡単です。次のコマンドを実行して、ディレクトリ内の重複ファイルを見つけます。たとえば、〜/ Downloads

$ fdupes ~/Downloads

システムからの出力例:

/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

ご覧のとおり、 / home / sk / Downloads /に重複ファイルがあります ディレクトリ。親ディレクトリからの重複のみが表示されます。サブディレクトリからの重複を表示するにはどうすればよいですか? -rを使用するだけです 以下のようなオプション。

$ fdupes -r ~/Downloads

これで、 / home / sk / Downloads /からの複製が表示されます。 ディレクトリとそのサブディレクトリも同様です。

Fdupesは、複数のディレクトリから重複を一度に見つけることもできます。

$ fdupes ~/Downloads ~/Documents/ostechnix

以下のように、複数のディレクトリを再帰的に検索することもできます。

$ fdupes ~/Downloads -r ~/Documents/ostechnix

上記のコマンドは、「〜/ Downloads」ディレクトリと「〜/ Documents/ostechnix」ディレクトリおよびそのサブディレクトリで重複を検索します。

ディレクトリ内の重複のサイズを知りたい場合があります。その場合は、 -Sを使用します 以下のようなオプション。

$ fdupes -S ~/Downloads
403635 bytes each: 
/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

同様に、親ディレクトリと子ディレクトリの重複のサイズを表示するには、 -Srを使用します オプション。

-n を使用して、空のファイルと隠しファイルを検討対象から除外できます。 および-A それぞれ。

$ fdupes -n ~/Downloads
$ fdupes -A ~/Downloads

最初のコマンドは長さがゼロのファイルを考慮から除外し、後者は指定されたディレクトリで重複を検索するときに隠しファイルを考慮から除外します。

重複ファイル情報を要約するには、 -mを使用します オプション。

$ fdupes -m ~/Downloads
1 duplicate files (in 1 sets), occupying 403.6 kilobytes

重複するものをすべて削除するには、 -dを使用します オプション。

$ fdupes -d ~/Downloads

サンプル出力:

[1] /home/sk/Downloads/Hyperledger Fabric Installation.pdf
[2] /home/sk/Downloads/Hyperledger Fabric Installation(1).pdf

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

このコマンドは、他のすべての重複を保存および削除するファイルの入力を求めます。対応するファイルを保持し、残りのファイルを削除するには、任意の番号を入力するだけです。このオプションを使用するときは、さらに注意してください。注意しないと、元のファイルを削除する可能性があります。

重複の各セットの最初のファイルを保持し、毎回プロンプトを表示せずに他のファイルを削除する場合は、 -dNを使用します オプション(非推奨)。

$ fdupes -dN ~/Downloads

重複が見つかったときに削除するには、 -Iを使用します フラグ。

$ fdupes -I ~/Downloads

Fdupesの詳細については、ヘルプセクションとマニュアルページを参照してください。

$ fdupes --help
$ man fdupes

また読む:

  • Duplicate Photos Fixer:フォトライブラリを適切に整理する

3。 FSlint

FSlint は、不要な重複ファイルを取り除き、Linuxシステムのディスク領域を解放するために時々使用するもう1つの重複ファイルファインダーユーティリティです。他の2つのユーティリティとは異なり、FSlintにはGUIモードとCLIモードの両方があります。だから、それは初心者にとってよりユーザーフレンドリーなツールです。 FSlintは、重複を検出するだけでなく、不正なシンボリックリンク、不正な名前、一時ファイル、不正なIDS、空のディレクトリ、削除されていないバイナリなども検出します。

FSlintのインストール

FSlintはAURで利用できます 、したがって、任意のAURヘルパーを使用してインストールできます。

$ yay -S fslint

Debian、Ubuntu、Linux Mintの場合:

$ sudo apt-get install fslint

Fedoraの場合:

$ sudo dnf install fslint

RHELでは、CentOS:

$ sudo yum install epel-release
$ sudo yum install fslint

インストールしたら、メニューまたはアプリケーションランチャーから起動します。

これがFSlintGUIの外観です。

FSlintインターフェース

ご覧のとおり、FSlintのインターフェースはユーザーフレンドリーでわかりやすいものです。 検索パス内 タブで、スキャンするディレクトリのパスを追加し、検索をクリックします 重複を見つけるには、左下隅にあるボタンをクリックします。再帰オプションをチェックして、ディレクトリおよびサブディレクトリ内の重複を再帰的に検索します。 FSlintは、指定されたディレクトリをすばやくスキャンして一覧表示します。

fslint GUI

リストから、クリーンアップする重複を選択し、保存、削除、マージ、シンボリックリンクなどのアクションを指定して、それらのいずれかを選択します。

高度な検索パラメータ タブで、重複を検索するときに除外するパスを指定できます。

fslint高度な検索

FSlintコマンドラインオプション

FSlintは、ファイルシステム内の重複を見つけるための次のCLIユーティリティのコレクションを提供します。

  • 検索 --重複ファイルを検索
  • findnl --Name Lint(ファイル名の問題)を検索します
  • findu8 --無効なutf8エンコーディングのファイル名を検索します
  • findbl -不正なリンク(シンボリックリンクに関するさまざまな問題)を見つける
  • findsn -同じ名前を見つける(名前が衝突する問題)
  • 見つかりました -空のディレクトリを検索
  • findid -無効なユーザーIDを持つファイルを検索します
  • findns -ストリップされていない実行可能ファイルを検索します
  • ファインダー -ファイル内の冗長な空白を検索します
  • findtf -一時ファイルを検索
  • findul -未使用の可能性のあるライブラリを見つける
  • zipdir --ext2ディレクトリエントリの無駄なスペースを再利用します

これらのユーティリティはすべて、 / usr / share / fslint / fslint / fslintから入手できます。 場所。

たとえば、特定のディレクトリで重複を見つけるには、次のようにします。

$ /usr/share/fslint/fslint/findup ~/Downloads/

同様に、空のディレクトリを見つけるには、コマンドは次のようになります。

$ /usr/share/fslint/fslint/finded ~/Downloads/

findup など、各ユーティリティの詳細を取得するには 、実行:

$ /usr/share/fslint/fslint/findup --help

FSlintの詳細については、ヘルプセクションとマニュアルページを参照してください。

$ /usr/share/fslint/fslint/fslint --help
$ man fslint

結論

Linuxで不要な重複ファイルを見つけて削除するための3つのツールについて理解しました。これら3つのツールの中で、私はRdfindをよく使用します。他の2つのユーティリティが効率的でないという意味ではありませんが、これまでのところRdfindに満足しています。さて、それはあなたの番です。お気に入りのツールはどれですか。その理由は何ですか。以下のコメントセクションでお知らせください。


Linux
  1. LinuxでSUIDおよびSGID権限を持つファイルを検索する方法

  2. Linuxで重複する写真を見つけて削除する方法

  3. Linuxで重複ファイルを見つける方法

  1. Linux で空のディレクトリとファイルを見つけて削除する方法

  2. Linuxで隠しファイルをchmodおよびchownする方法は?

  3. Linux ですべての空のファイルとディレクトリを再帰的に削除するにはどうすればよいですか?

  1. Linuxでファイルを見つける方法

  2. Linux ファイルとディレクトリの削除

  3. Unix で空のディレクトリとファイルを見つけて削除する方法