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