簡體   English   中英

Ruby SFTP——刪除目錄

[英]Ruby SFTP—delete directory

我想使用帶有 ruby​​ 的 sftp 刪除一個目錄。 目前我正在嘗試從 ruby​​ 的 Net-sftp 庫中使用方法 (rmdir)。

這是我的代碼:

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")

目錄不是空的,所以我必須一個一個遞歸地刪除它們,還是有辦法在單個命令中實現它?

編輯

我可以設法刪除目錄。 我需要完成兩個發現:

  1. 目錄必須為空
  2. /\\.|\\.\\./需要是/^(\\.|\\.\\.)$/ ,否則文件也被排除在外,因此目錄永遠不會為空。

但是在刪除之前遍歷所有目錄很慢,那么,有沒有更快的方法?

您可以將 rmdir 委托給底層 ssh 會話

sftp.session.exec!("rm -rf #{uri.path}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM