重複した画像を削除する

重複した画像を削除する

元の画像は img.jpg です。

img.jpg1、img.jpg2、img.jpg3 という重複した画像を削除するにはどうすればよいでしょうか。.jpg 拡張子を持つ画像は保持したいです。

ありがとう

答え1

GUIソリューション

  1. ctrlnautilusでは、 +を使用して選択ダイアログを開きます。S
  2. *.jpg.jpg拡張子を持つすべての画像を選択するには入力してください

ここに画像の説明を入力してください ここに画像の説明を入力してください

  1. ctrl+ shift+を使用して選択範囲を反転し、i.jpg 拡張子のない画像 (必要な画像) を選択します。

ここに画像の説明を入力してください

  1. 右クリックして選択するMove to trashか、キーを押しますdelete
    ここから、圧縮、切り取りなど、必要な操作をすべて実行できます。

答え2

findコマンドを および-regexフラグと組み合わせます-exec。この特定の例では、重複したイメージをすべて取得してゴミ箱に移動するだけで、必要に応じてそれらを復元できます。後でコマンドを使用するか、GUI からゴミ箱をクリーンアップ-execできます。rm

testerdir:$ ls
img.jpg  img.jpg1  img.jpg2  img.jpg3

testerdir:$ find  . -regex ".*\.jpg[1-9]+" -print -exec mv -t $HOME/.local/share/Trash/ {} +                                 
./img.jpg1
./img.jpg3
./img.jpg2

testerdir:$ ls $HOME/.local/share/Trash                                                                                   
expunged/  files/  img.jpg1  img.jpg2  img.jpg3  info/

testerdir:$ ls
img.jpg

答え3

bashを非再帰的に使用する:

shopt -s extglob nullglob
rm img.jpg+(?)

末尾に数字のみがある場合:

rm img.jpg+([0-9])

再帰的に:

shopt -s globstar extglob nullglob
rm **/img.jpg+(?)

末尾が数字のみの場合:

rm **/img.jpg+([0-9])

ここではいくつかのシェル オプションを使用しました。

  • extglob拡張 glob パターンの一致が可能になります。たとえば、+(?)任意の文字の 1 回以上の出現と一致します。これは、対話型シェルではデフォルトで有効になっている必要があります。

  • nullglob一致するものが見つからない場合はnull文字列になります

  • globstar再帰的に検索できるようになります**

関連情報