Поиск и удаление файлов с определенным расширением или с номером

Я бы хотел, чтобы мой скрипт нашел определенный тип файла и удалите его.

Я знаю, что find path / to / directory / -type f -name '* .ext' -delete найдет и удалит все файлы с расширением.

Теперь я также хотел бы, чтобы мой скрипт удалял все файлы, заканчивающиеся номером, независимо от расширения, а также файлы, заканчивающиеся расширением.

Я безуспешно пробовал следующие команды:

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

Ни одна из них не сработала, я не уверен, что именно мне нужно изменить или что я делаю не так.

1
задан 11 August 2021 в 12:21

1 ответ

удалить файлы, заканчивающиеся расширением, а также любые файлы, заканчивающиеся числом, независимо от расширения

Для этого нужны условия, объединенные логическим OR вместо стандартного логического AND (круглые скобки нужны, потому что OR имеет меньший приоритет, чем AND, и они должны быть заключены в кавычки, чтобы оболочка передавала их в find как литералы):

find path/to/directory/ -type f \( -name '*.ext' -o -name '*[0-9].*' \) -print

Измените -print на -delete, когда вы убедитесь, что он делает все правильно. В реализации GNU find вы можете использовать -or вместо -o, если хотите.

1
ответ дан 20 August 2021 в 10:30

Другие вопросы по тегам:

Похожие вопросы: