【问题标题】:Changing Directory by Ruby通过 Ruby 更改目录
【发布时间】:2018-08-09 19:45:39
【问题描述】:

我正在尝试创建一个简单的脚本来从我的桌面删除所有文件(我使用的是 Ubuntu)。

puts "Started at #{Time.now}"
Dir.chdir("/Desktop")
Dir.entries(".").each do |file|
    if file.to_s.include?("xlsx")
      puts "Deleting file #{file}" unless file == "." || file == ".."
      File.delete "#{Dir.pwd}/#{file}" unless file == "." || file == ".."
    end  
end
puts "Ended on #{Time.now}"

但是当我生成代码时,它会抛出以下错误:

chdir': 没有这样的文件或目录@dir_chdir - /Desktop (Errno::ENOENT)

我做错了什么?

【问题讨论】:

  • 不工作! `chdir': No such file or directory @ dir_chdir - ./Desktop (Errno::ENOENT)
  • 应该是~/Desktop。另外,unless 子句是多余的,文件不能同时包含xlsx(应该是.ends_with?('.xlsx') btw)和等于'.'
  • 谢谢!它仍然无法正常工作。它显示相同的错误'chdir': No such file or directory @ dir_chdir - ~/Desktop (Errno::ENOENT) 是的,我只想从桌面上删除所有 xlsx 文件。
  • 不。愚蠢的红宝石不懂波浪号。使用:Dir.chdir && Dir.chdir('Desktop').
  • 成功了,谢谢!将其发布为答案。

标签: ruby linux ubuntu


【解决方案1】:
puts "Started at #{Time.now}"
Dir.chdir("#{ENV['HOME']}/Desktop")
Dir.entries(".").select { |file| file.ends_with?('.xlsx') }.each do |file|
  puts "Deleting file #{file}"
  File.delete "#{Dir.pwd}/#{file}"
end
puts "Ended on #{Time.now}"

【讨论】:

  • 这仅在从主目录运行时才有效,最好使用"#{ENV["HOME"]}/desktop"
  • @maxpleaner 我已经测试过了,请注意空Dir.chdir &&
猜你喜欢
  • 1970-01-01
  • 2014-03-02
  • 2016-03-14
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
相关资源
最近更新 更多