Bash как удалить все файлы с несколькими расширениями, кроме одного каталога

#linux #bash

#линукс #удар

Вопрос:

У меня есть этот фрагмент

find . ( -iname *.ini -o -iname *.properties -o -iname *.xml ) -type f -delete

который удаляет все во всех вложенных папках, содержащих эти расширения, что именно то, что я хочу.

Единственное изменение, которое я хочу внести, — теперь я хотел бы, чтобы это исключало каталог с именем «Ресурсы/». Я хочу, чтобы он удалил все отмеченные файлы расширений во всех вложенных папках, КРОМЕ каталога ресурсов.

Однако я не уверен, как это сделать.

Мы ценим любую и всяческую помощь

Ответ №1:

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

 find . ( -iname *.ini -o -iname *.properties -o -iname *.xml ) -type f -not -path "./resources/*" -delete  

Комментарии:

1. Почему это так, что -not path не обязательно идти впереди? Разве предикаты не оцениваются слева направо?