Intereting Posts
изменить имена устройств в LVM Почему определенные соглашения об именах так непоследовательны в Linux? FreeBSD не Unix. Но его Unix-подобный Unix. Где же тогда основной Unix читает исходный код? сохранить дубликаты из $ PATH на источнике Что означает этот , начинающийся с многих строк во время экрана загрузки Linux? Установите диски ATA в каталог с именем UUID Как проверить, установлено ли соединение с данным хостом / портом в Bash? Rsync устанавливает новое соединение ssh каждый раз для нескольких файлов или использует одно и то же соединение? Как настроить sshd_config, чтобы не принимать ключи dsa, которые настроены в публичной аутентификации? Чрезмерное использование ЦП во время работы Facebook и нескольких других сайтов Red Hat 7 KickStarter Показывать только измененные строки без синтаксиса с помощью git diff Как изменить хеш-спецификацию и время-время существующего устройства LUMS dm-crypt? Статус apache и systemctl 100.0% sy с плохой производительностью диска

удалить файлы, соответствующие шаблону

Мне нужно рекурсивно удалить все файлы во всех поддирерах, где имя файла содержит число, за которым следует «x», за которым следует число, по крайней мере два раза.

Пример:

Я хочу удалить эти файлы:

'aaa-12x123-123x12.jpg' 'aaa-12x12-123x12-12x123.jpg' 

Но я не хочу удалять эти файлы:

 'aaa.jpg' 'aaa-12x12.jpg' 'aaaxaaa-123x123.jpg' 'aaaxaaa-aaaxaaa.jpg' 

Как я могу это сделать (из оболочки bash)

Строка содержит «число, за которым следует x за которым следует число», если и только если оно содержит цифру, за которой следует x за которым следует цифра, т. Е. Если она содержит подстроку, соответствующую шаблону [0-9]x[0-9] . Поэтому вы хотите удалить файлы, имя которых соответствует шаблону *[0-9]x[0-9]*[0-9]x[0-9]*.jpg .

 find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete 

Если ваша find не имеет -delete , вызовите rm для удаления файлов.

 find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +