Ruby - 删除所有名称与模式匹配的文件

20

我有多个文件(在包含成千上万个文件的文件夹中),例如:

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

如何删除所有page_code*的文件?

注:我不想使用FileUtils或shell。

2个回答

29

Dir::glob支持单个字符通配符(即?)。根据您的示例,您可以使用?定位给定目录中的适当文件,然后将它们删除。

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

如果单个字符通配符不足以满足需求,可以使用 * 返回所有文件,并在 each 之前插入一个块来选择。 - Cary Swoveland
即使使用File.join,它仍然可以正常工作:Dir.glob(File.join(File.dirname(__FILE__), './tmp/*.png')).each - Saša Zejnilović

2

使用通配符删除文件。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接