bash удалить файлы, имена которых содержат звездочки

Как в bash удалить файлы, имя которых содержит звездочки? Я имею в виду использование подстановочных знаков. Если я сделаю

rm -fr *filter*

Я удалю все файлы, в имени которых есть слово «фильтр», но что делать, если файлы содержат звездочку?

РЕДАКТИРОВАТЬ: Следуя вашему совету, я не могу удалить это

*filter*xyz*.data

person Open the way    schedule 16.07.2011    source источник
comment
Было бы полезно, если бы вы сказали нам, какие из этих звездочек являются буквальными, а какие — подстановочными знаками.   -  person Paul Tomblin    schedule 16.07.2011
comment
если ls *filter* покажет вам файл, то rm *filter* удалит его.   -  person glenn jackman    schedule 16.07.2011


Ответы (2)


rm -rf '*filter*' 

Должно работать хорошо. Используйте кавычки (обновлено до одиночных на основе комментария).

person mikey    schedule 16.07.2011
comment
@Paul +1 Я не знал о небольшой разнице между одинарными и двойными кавычками. Двойные звездочки допустимы, но для некоторых других символов сохраняется специальное значение. Спасибо! faqs.org/docs/bashman/bashref_8.html#SEC8 - person mikey; 16.07.2011

person    schedule
comment
Вам нужно только избегать звездочек, которые на самом деле являются звездочками. Поэтому, если вы хотите удалить все файлы, которые содержат filter, за которым следует звездочка, за которой следует xyz, за которым следуют любые другие символы и которые заканчиваются на .data, вы должны сделать rm -rf *filter\*xyz*.data - person Paul Tomblin; 16.07.2011
comment
хорошо, и теперь я понимаю, что это было бы намного проще; как мне получить список всех файлов, имена которых содержат только звездочки? независимо от фильтра - person Open the way; 16.07.2011