У меня есть папка, где моя музыка без тегов - это место, где я хочу запустить скрипт для удаления всех .png и .jpg, кроме тех, которые начинаются со слова «cover». Вот что я попробовал:
find . -name '*.jpg' -or -name '*.png' -not - -name 'cover.*'
find . (-name '*.jpg' -or -name '*.png'\) -not - -name '*.png'
И другой вариант из двух, ни один не работал. (Я не включил -delete в конце специально)
Команда, которую Вы ищете:
find . -type f \( -name '*.jpg' -or -name '*.png' \) -not -name "cover.*"
Добавление type -f
сделает find
команда только ищет файлы.
В Вашей второй команде необходимо добавить пространство после \(
и прежде \)
(Вы также забыли \
прежде (
).
Кроме того, Вам не нужен a -
между -not
и -name
. Ваша первая команда хорошо работает при удалении ее, не производя вывод, который Вы хотите (см. комментарий JoL).
Можно читать больше о find
синтаксис и опции в странице справочника Ubuntu команды онлайн, или выполненный команда man find
прочитать руководство в терминале. А именно, читайте OPERATORS
раздел руководства, так как это - что, кажется, смущает Вас больше всего.
Примечание: Большинство терминальных команд предоставляет руководству надлежащий синтаксис команды и доступные варианты, которые можно считать, если Вы работаете man <command>
в Вашем терминале.
Я думаю, что Вам нужно -not
оператор перед эти -or
операторы:
find -not -name "cover*" -name "*.jpg" -or -name "*.png"