Удалить дубликаты изображений
У меня оригинальное изображение img.jpg.
Как я могу удалить дубликаты изображений, которые img.jpg1, img.jpg2, img.jpg3. Я хочу сохранить изображение с расширением.jpg.
Спасибо
3 ответа
Объединить find
команда с -regex
а также -exec
флаги. В этом конкретном примере -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
GUI Solution
- В nautilus, откройте диалог выбора, используя Ctrl + S
- Тип
*.jpg
выбрать все изображения с расширением.jpg
- Инвертируйте выделение, используя ctrl + shift + i, чтобы выбрать те, которые не имеют расширения.jpg (что вам и нужно).
- Щелкните правой кнопкой мыши и выберите
Move to trash
или просто нажмите клавишу удаления.
Отсюда вы также можете делать все что угодно - сжимать, резать и т. Д.
С помощью 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
позволит нам соответствовать расширенным шаблонам глобуса, например,+(?)
будет соответствовать одному или нескольким вхождениям любого персонажа. Это должно быть включено в интерактивной оболочке по умолчанию.nullglob
приведет к пустой строке, если совпадение не найденоglobstar
позволит нам искать рекурсивно, используя**