如何从目录中删除所有符合某些条件的文件?

时间:2016-05-31 15:42:59

标签: ruby

假设我在app目录中有以下文件列表:

$ tree app
app
└── lib
    ├── 3682_garbage.rb
    ├── 2639_grey.rb
    ├── 2311_blue.rb
    ├── 8276_garbage.rb
    └── 3672_garbage.rb

如何在此目录中删除garbage匹配的所有文件?之后,目录应如下所示:

app
└── lib
    ├── 2639_grey.rb
    └── 2311_blue.rb

如何以相反的方式执行删除,即文件名不包含garbage

app
└── lib
    ├── 3682_garbage.rb
    ├── 8276_garbage.rb
    └── 3672_garbage.rb

我知道在这种情况下可以使用Dir.glob方法,但我不知道如何。

1 个答案:

答案 0 :(得分:1)

使用Dir.glob

Dir.glob("*garbage.*")
#=> ["3682_garbage.rb", "8276_garbage.rb", "3672_garbage.rb"]

要选择与条件不匹配的文件,只需使用Array#-方法从所有文件中减去匹配的文件。

Dir.glob("*") - Dir.glob("*garbage.*")
#=> ["2639_grey.rb", "2311_blue.rb"]