我想用紅寶石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")
的目錄是不是空的,所以我必須通過遞歸刪除一個一個,還是有辦法在一個命令中實現這一點?
編輯
我可以設法刪除目錄。需要由我來兩個發現:
- 目錄需要空
/\.|\.\./
必須/^(\.|\.\.)$/
,否則文件被排除在外了,所以目錄慣於永遠是空的。
但是在刪除它們之前遍歷所有的目錄很慢,所以有更快的方法嗎?