2016-08-14 4 views
7

У меня есть несколько файлов (в папке, содержащих тысячи файлов), например:
рубина - удалить все файлы с именами, соответствующими шаблоном

...
page_bonus.txt
page_code1.txt
page_code2.txt
page_text1.txt
page_text2.txt
page_text3.txt
...

Как удалить все файлы page_code *?

Примечание: Я не хочу использовать FileUtils или оболочки

ответ

7

Dir::glob поддерживает один подстановочные символы (т.е. ?). На основе вашего примера вы можете найти соответствующие файлы в данном каталоге, используя ?, а затем удалить их.

Dir.glob('/home/your_username/Documents/page_code?.txt').each { |file| File.delete(file)} 
+0

работает очень хорошо, спасибо большое ^^ –

+0

... и если односимвольный символ не достаточен, используйте '*', чтобы вернуть все файлы и вставить 'select' с блоком перед' each'. –

+0

работает даже с File.join 'Dir.glob (File.join (File.dirname (__ FILE__), './tmp/* .png')). Each' –

1

Чтобы удалить файлы с помощью подстановочного знака.

Dir.glob("/tmp/files/*").select{ |file| /MY STRING/.match file }.each { |file| File.delete(file)} 

Регулярное выражение в элементе выбора используется для захвата требуемых файлов.

Смежные вопросы