23722


特定の文字列をファイル名に含むファイルを一括削除するために

[code]

    FileUtils.rm("/var/foo/something_*")
    
[/code]

としたんですが、`*`の展開を受け持つのが`rm`ではなくシェルの役目だからだと思いますが`Errno::ENOENT: No such file or
directory`になってしまいました。

とりあえずは`Dir.glob`を使って

[code]

    Dir.glob("/var/foo/something_*").each{ |f| FileUtils.rm(f) }
    
[/code]

で目的の動作は行えたんですが、`FileUtils.rm`コマンド単体で`*`の展開を行うことはできますか？

もしくはそれ以外でシンプルに書ける方法はありますか？


CC BY-SA 3.0
2016-04-04T02:56:12.897
23720
2016-04-04T03:07:53.600
3271
question
ruby
FileUtils.rm で * を展開して使う方法


[ドキュメント](http://ruby-
doc.org/stdlib-2.3.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-
rm)を見てもワイルドカード展開ができるようには書いていないので、「`FileUtils.rm`コマンド単体で`*`の展開を行うこと」については無理だと思います。

第１引数の`list`には、複数のファイルパスをまとめて渡せるので、

[code]

    FileUtils.rm(Dir.glob("/var/foo/something_*"))
    
[/code]

と書けば、(場合によっては、`FileUtils.rm Dir.glob("/var/foo/something_*")`)少しだけ短くなりますが。


CC BY-SA 3.0
2016-04-04T03:07:53.600
23722
2016-04-04T03:07:53.600
13972
23720
answer