我想用红宝石sftp删除一个目录。目前,我正在尝试使用来自Net-sftp红宝石库的this方法(rmdir)。红宝石SFTP删除目录
这里是我的代码:
uri = URI(url)
Net::SFTP.start(uri.host, uri.user, :password => uri.password) do |sftp|
handle = sftp.opendir!(uri.path)
sftp.readdir!(handle).each do |item|
unless item.name =~ /\.|\.\./
sftp.rmdir!(uri.path + "/" + item.name)
end
end
end
但唯一想我能达到这个错误是:
Net::SFTP::StatusException : Net::SFTP::StatusException (4, "failure")
的目录是不是空的,所以我必须通过递归删除一个一个,还是有办法在一个命令中实现这一点?
编辑
我可以设法删除目录。需要由我来两个发现:
- 目录需要空
/\.|\.\./
必须/^(\.|\.\.)$/
,否则文件被排除在外了,所以目录惯于永远是空的。
但是在删除它们之前遍历所有的目录很慢,所以有更快的方法吗?