元の画像は img.jpg です。
img.jpg1、img.jpg2、img.jpg3 という重複した画像を削除するにはどうすればよいでしょうか。.jpg 拡張子を持つ画像は保持したいです。
ありがとう
答え1
答え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
再帰的に検索できるようになります**