grep - сопоставить что угодно, кроме заданного типа файла

5

Я хочу очистить свою музыкальную библиотеку, чтобы больше не получать сообщений о «поиске подходящего плагина» от Rhythmbox, когда он попадает в какую-то WMA-Relic.

У меня есть инструменты, но теперь я хочу найти эти файлы. Я могу получить список всех музыкальных файлов с помощью ls, затем перенаправить их в grep и перехватить все mp3-файлы следующим образом:

ls */* | grep \.mp3$

Теперь я хочу отфильтровать все MP3, как бы я это сделал? Я много возился с ^ и ~ и! но я никогда не получал. Я знаю, что там есть несколько WMA, но зачем мне искать вручную, когда у меня есть компьютер xD

Кто-нибудь может помочь?


источник

Ответы:

12

grep -v вернет все строки, которые не соответствуют вашему поисковому запросу

Вы также можете использовать:

find . ! -name "*.mp3"

сделать все это в одной команде.

Мартин Хилтон
источник
2
Чтобы быть в безопасности, я бы выбрал -iname вместо -name, чтобы выполнить регистронезависимое совпадение. Вы можете иметь или не иметь некоторые файлы .MP3, сидящие без дела, и т.д ...
jonathanserafini
4

Посмотрите на -vпереключатель grep, который инвертирует соответствие.

Аяз
источник