Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

fdupes:Linux 上の重複ファイルを検索して削除するための効率的なコマンドライン ツール

重複ファイルを検索して置換することは、ほとんどのコンピュータ ユーザーにとって一般的な要件です。重複ファイルを見つけて削除するのは、時間と忍耐を必要とする面倒な作業です。マシンが GNU/Linux を搭載している場合は、「fdupes」のおかげで、重複ファイルを見つけるのが非常に簡単になります。 ' ユーティリティ。

fdupes:Linux 上の重複ファイルを検索して削除するための効率的なコマンドライン ツール Fdupes – Linux での重複ファイルの検索と削除

fdupes とは何ですか?

フデュプスAdrian Lopez によって書かれた Linux ユーティリティです。 C で MIT ライセンスに基づいてリリースされたプログラミング言語。アプリケーションは、指定されたディレクトリおよびサブディレクトリのセットで重複ファイルを見つけることができます。 Fdupes は、ファイルの MD5 署名を比較し、続いてバイトごとの比較を行うことによって重複を認識します。 Fdupes には多くのオプションを渡して、ファイルの一覧表示、削除、重複へのハードリンクとの置換を行うことができます。

比較は次の順序で開始されます。

サイズ比較> 部分的な MD5 署名の比較> 完全な MD5 署名の比較> バイト間の比較 .

Linux に fdupe をインストールする

fdupes の最新バージョン (fdupes バージョン 1.51) のインストールは、Debian で次のコマンドを実行するだけで簡単です。 Ubuntu などのベースのシステム とLinux Mint .

$ sudo apt-get install fdupes

CentOS の場合 /RHEL そしてフェドーラ ベースのシステムの場合、fdupes パッケージをインストールするには epel リポジトリをオンにする必要があります。

# yum install fdupes
# dnf install fdupes [On Fedora 22 onwards]

注意 :デフォルトのパッケージマネージャー yumdnf に置き換えられます。 Fedora 22 より 今後…

fdupes コマンドの使用方法

1. デモンストレーションの目的で、ディレクトリ (tecmint など) にいくつかの重複ファイルを作成してみましょう。 ) 単に次のようになります:

$ mkdir /home/"$USER"/Desktop/tecmint && cd /home/"$USER"/Desktop/tecmint && for i in {1..15}; do echo "I Love Tecmint. Tecmint is a very nice community of Linux Users." > tecmint${i}.txt ; done

上記のコマンドを実行した後、重複ファイルが作成されたか、ls コマンドを使用していないことを確認しましょう。

$ ls -l
total 60
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint10.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint11.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint12.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint13.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint14.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint15.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint1.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint2.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint3.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint4.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint5.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint6.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint7.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint8.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9.txt

上記のスクリプトは 15 を作成します ファイル名は tecmint1.txt、tecmint2.txt…tecmint15.txt で、すべてのファイルには同じデータが含まれています。つまり

"I Love Tecmint. Tecmint is a very nice community of Linux Users."

2. 次に、tecmint フォルダ内で重複ファイルを検索します。 .

$ fdupes /home/$USER/Desktop/tecmint 
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

3. -r を使用して、サブディレクトリを含むすべてのディレクトリで重複を再帰的に検索します。 オプション。

すべてのファイルとフォルダーを再帰的に検索しますが、ファイルとフォルダーの数によっては、重複をスキャンするのに時間がかかります。その間、次のような合計の進行状況がターミナルに表示されます。

$ fdupes -r /home
Progress [37780/54747] 69%

4. -S を使用して、フォルダ内で見つかった重複のサイズを確認します。 オプション。

$ fdupes -S /home/$USER/Desktop/tecmint
65 bytes each: 
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

5. -S を使用すると、ディレクトリ内で見つかったすべてのディレクトリとサブディレクトリの重複ファイルのサイズを確認できます。 と -r 同時に次のようなオプションを追加できます。

$ fdupes -Sr /home/avi/Desktop/
65 bytes each: 
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt
107 bytes each:
/home/tecmint/Desktop/resume_files/r-csc.html
/home/tecmint/Desktop/resume_files/fc.html

6. 1 つのフォルダーまたはすべてのフォルダーを再帰的に検索する以外に、必要に応じて 2 つのフォルダーまたは 3 つのフォルダーを選択することもできます。言うまでもなく、オプション -S を使用することもできます。 および/または -r 必要に応じて。

$ fdupes /home/avi/Desktop/ /home/avi/Templates/

7. コピーを保存しながら重複ファイルを削除するには、オプション 「-d」 を使用します。 。このオプションを使用する場合は特に注意する必要があります。そうしないと、必要なファイルやデータが失われ、プロセスが回復不能になる可能性があります。

$ fdupes -d /home/$USER/Desktop/tecmint
[1] /home/tecmint/Desktop/tecmint/tecmint13.txt
[2] /home/tecmint/Desktop/tecmint/tecmint8.txt
[3] /home/tecmint/Desktop/tecmint/tecmint11.txt
[4] /home/tecmint/Desktop/tecmint/tecmint3.txt
[5] /home/tecmint/Desktop/tecmint/tecmint4.txt
[6] /home/tecmint/Desktop/tecmint/tecmint6.txt
[7] /home/tecmint/Desktop/tecmint/tecmint7.txt
[8] /home/tecmint/Desktop/tecmint/tecmint9.txt
[9] /home/tecmint/Desktop/tecmint/tecmint10.txt
[10] /home/tecmint/Desktop/tecmint/tecmint2.txt
[11] /home/tecmint/Desktop/tecmint/tecmint5.txt
[12] /home/tecmint/Desktop/tecmint/tecmint14.txt
[13] /home/tecmint/Desktop/tecmint/tecmint1.txt
[14] /home/tecmint/Desktop/tecmint/tecmint15.txt
[15] /home/tecmint/Desktop/tecmint/tecmint12.txt
Set 1 of 1, preserve files [1 - 15, all]: 

すべての重複がリストされ、1 つずつ、特定の範囲で、または一度にすべて削除するように求められる場合があります。特定の範囲のファイルを削除するには、以下のような範囲を選択できます。

Set 1 of 1, preserve files [1 - 15, all]: 2-15
 [-] /home/tecmint/Desktop/tecmint/tecmint13.txt
 [+] /home/tecmint/Desktop/tecmint/tecmint8.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint11.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint3.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint4.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint6.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint7.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint9.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint10.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint2.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint5.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint14.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint1.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint15.txt
 [-] /home/tecmint/Desktop/tecmint/tecmint12.txt

8. 安全の観点から、「fdupes」 の出力を印刷することをお勧めします。 ファイルにコピーし、テキスト ファイルをチェックして削除するファイルを決定します。これにより、ファイルが誤って削除される可能性が低くなります。次のようにすることもできます:

$ fdupes -Sr /home > /home/fdupes.txt

注意 :「/home」 を置き換えることができます。 希望のフォルダーに移動します。オプション 「-r」 も使用します と「-S」 再帰的に検索したい場合と印刷サイズをそれぞれ検索したい場合。

9. オプション 「-f」 を使用すると、各一致セットから最初のファイルを省略できます。 .

最初にディレクトリのファイルをリストします。

$ ls -l /home/$USER/Desktop/tecmint
total 20
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (3rd copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (4th copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (another copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9.txt

その後、各一致セットから最初のファイルを省略します。

$ fdupes -f /home/$USER/Desktop/tecmint
/home/tecmint/Desktop/tecmint9 (copy).txt
/home/tecmint/Desktop/tecmint9 (3rd copy).txt
/home/tecmint/Desktop/tecmint9 (another copy).txt
/home/tecmint/Desktop/tecmint9 (4th copy).txt

10. インストールされている fdupes のバージョンを確認してください。

$ fdupes --version
fdupes 1.51

11. fdupe に関するヘルプが必要な場合は、スイッチ 「-h」 を使用してください。 .

$ fdupes -h
Usage: fdupes [options] DIRECTORY...
 -r --recurse for every directory given follow subdirectories
 encountered within
 -R --recurse: for each directory given after this option follow
 subdirectories encountered within (note the ':' at
 the end of the option, manpage for more details)
 -s --symlinks follow symlinks
 -H --hardlinks normally, when two or more files point to the same
 disk area they are treated as non-duplicates; this
 option will change this behavior
 -n --noempty exclude zero-length files from consideration
 -A --nohidden exclude hidden files from consideration
 -f --omitfirst omit the first file in each set of matches
 -1 --sameline list each set of matches on a single line
 -S --size show size of duplicate files
 -m --summarize summarize dupe information
 -q --quiet hide progress indicator
 -d --delete prompt user for files to preserve and delete all
 others; important: under particular circumstances,
 data may be lost when using this option together
 with -s or --symlinks, or when specifying a
 particular directory more than once; refer to the
 fdupes documentation for additional information
 -N --noprompt together with --delete, preserve the first file in
 each set of duplicates and delete the rest without
 prompting the user
 -v --version display fdupes version
 -h --help display this help message

以上です。 Linux でこれまでどのように重複ファイルを見つけて削除していたか教えてください。また、このユーティリティについてのあなたの意見も聞かせてください。貴重なフィードバックを以下のコメント セクションに記入してください。また、「いいね」を押したり共有したりして、拡散にご協力ください。

私は重複ファイルを削除する fslint という別のユーティリティに取り組んでいます。近々投稿する予定ですので、ぜひ読んでいただければと思います。


  1. シェルスクリプト言語での数式の計算–パートV

    あなたの人々は、シェルスクリプトを理解して、快適に感じるでしょう。 必要に応じて流暢に書きます。これは、このチュートリアルシリーズの最後の投稿であり、少し複雑な数学演算を実行します。 スクリプト言語を使用します。 シェルスクリプトの最後の4つの記事 年代順になっているシリーズ。 基本的なLinuxシェルスクリプト言語のヒントを理解する–パートI Linux初心者がシェルプログラミングを学ぶための5つのシェルスクリプト–パートII Linux BASHスクリプティングの世界を航海する–パートIII Linuxシェルプログラミングの数学的側面–パートIV フィボナッチ数列から始

  2. この単純なBashスクリプトを使用して、自宅で両面ドキュメントを印刷します

    自宅にレーザープリンターがあります。このHewlettPackardLaserJet Pro CP1525nwカラープリンターは古いモデルですが、確実にカラーで印刷できる優れた主力製品です。数年前に、RaspberryPiをプリントサーバーとして使用してホームネットワークに配置しました。 LaserJetは、私のホームオフィスに追加された素晴らしい機能です。昨年会社を立ち上げて以来、この小さなレーザープリンターを利用して、クライアントの会議、ワークショップ、トレーニングセッション用の配布物やその他の資料を印刷してきました。 このプリンターの唯一の不満は、片面のみを印刷することです。両面