gpt4 book ai didi

Ruby SFTP——删除目录

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:19 25 4
gpt4 key购买 nike

我想使用带 ruby​​ 的 sftp 删除一个目录。目前我正在尝试 this来自 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 委托(delegate)给底层的 ssh session

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

关于Ruby SFTP——删除目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com