Я бы хотел, чтобы мой скрипт нашел определенный тип файла и удалите его.
Я знаю, что 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
Ни одна из них не сработала, я не уверен, что именно мне нужно изменить или что я делаю не так.
удалить файлы, заканчивающиеся расширением, а также любые файлы, заканчивающиеся числом, независимо от расширения
Для этого нужны условия, объединенные логическим OR вместо стандартного логического AND (круглые скобки нужны, потому что OR имеет меньший приоритет, чем AND, и они должны быть заключены в кавычки, чтобы оболочка передавала их в find
как литералы):
find path/to/directory/ -type f \( -name '*.ext' -o -name '*[0-9].*' \) -print
Измените -print
на -delete
, когда вы убедитесь, что он делает все правильно. В реализации GNU find
вы можете использовать -or
вместо -o
, если хотите.