回答
通過File API,Ruby on OS X的創建時間不可用。其中一種方法是脫殼至stat(1)
。不是很漂亮,但至少會返回創建(a.k.a出生)時間:
def birth(file)
Time.at(`stat -f%B "#{file}"`.chomp.to_i)
end
Dir.entries('.').sort_by {|f| birth f }
或者使用給出的分區回答。
下面是一篇關於常見誤解的詳細文章:ctime does not mean creation time。
的ctime
返回更改時間統計(即,有關該文件的時間目錄 信息被改變,而不是文件本身)。
請注意,在Windows(NTFS)上,返回創建時間(出生時間)。
http://www.ruby-doc.org/core-2.0.0/File/Stat.html#method-i-ctime
所以你可以做這樣的事情。
Dir.entries('.').sort {|a,b| File.stat(a).ctime <=> File.stat(b).ctime}
這是我的答案。您可以在目錄中的文件通過他們的修改時間與東西沿着這些路線使用File.new('filename').mtime
files_hash = Hash.new
Dir.foreach('.') do |file_name|
modified_time = File.new(file_name).mtime
unless file_name == '.' || file_name == '..' then
files_hash[file_name] = modified_time
end
end
# Sort the hash.
files_hash = files_hash.sort_by {|key, value| value}
files_hash.each do |name, time|
puts "#{name} was modified at #{time}"
end
排序可以使用Enumerable#partition
:
files = Dir.entries('.')
time = Time.parse("2013-09-01")
before, after = files.partition { |file| File.ctime(file) < time }
由於錫文指出,ctime
不是唯一的文件時間方法。也許atime
或mtime
是一個更好的選擇。
'ctime'不是創作時間。 「 返回stat的更改時間(即有關文件的時間目錄信息已更改,而不是文件本身)。」 Linux或Mac OS都不會保留文件創建時間,只有Windows會這樣做,所以大多數語言都不會嘗試報告它。返回的值在各個操作系統中會有所不同,從而導致混淆。 'mtime'是一個更好的選擇。 –
@theTinMan我在回答中添加了一條註釋。 BTW,OS X保留文件創建時間(至少在HSF捲上),但它不能作爲Ruby方法使用。 – Stefan
它將其作爲擴展屬性文件中Finder信息的一部分保存爲側車文件。標準* nix OS調用無法訪問它,這就是爲什麼Ruby無法獲取它。在2.0之前的Ruby是一致的。爲什麼他們改變爲不一致的模式已經超越了我,但我認爲這是一個糟糕的決定。 –
Dir["dir_path/*"].sort_by { |p| File::Stat.new(p).birthtime }
作品在MacOS
- 1. 按創建日期排序文件 - iOS
- 2. 如何根據日期創建文件?
- 3. 如何返回文件創建日期?
- 4. 按日期創建
- 5. 創建數組文件和按日期排序在ruby
- 6. 如果文件包含日期,如何創建日期類別?
- 7. 按日期組織的文件夾名稱,如何找到最新的?
- 8. Unix - 文件創建日期
- 9. 文件的創建日期
- 10. 如何創建和組織JavaScript數組?
- 11. Javascript,如何創建日期數組?
- 12. 如何按日期組織我的列表視圖?
- 13. 如何按照添加的日期組織icloud數據?
- 14. 按類型組織文件
- 15. Linux按創建日期和給定文件名組合排序文件
- 16. 如何按日期分組並根據值創建列?
- 17. 在OpenVMS中創建索引文件組織和相關文件組織
- 18. Log4Net C# - 按日期創建日誌文件夾
- 19. 組織模式 - 如何使用org-capture創建新文件?
- 20. 如何組織使用php動態創建的文件?
- 21. 組織模式beamer - 如何創建一個簡短的標題,作者,日期?
- 22. 如何按日期分組?
- 23. BigCommerce獲取按分鐘創建日期創建日期
- 24. 如何獲取文件的文件創建日期?
- 25. 按日期分組按日期分組
- 26. 如何組織DataClasses.dbml文件
- 27. 如何組織css文件?
- 28. 如何組織頭文件
- 29. 如何根據單獨的日期和時間組件創建Oracle日期?
- 30. 如何按星期分組日期?
看看http://stackoverflow.com/questions/7389733/sort-order-in-rubys-dir-entries-method – calas
你怎麼知道創建文件時?傳統的UNIX文件系統不知道。 ('ctime' /'st_ctime'不記錄文件的創建時間。) – pilcrow
+1 @pilcrow。 'ctime'不能被依賴,因爲它意味着兩種不同的東西,這取決於操作系統和Ruby的版本。改爲使用'mtime'。 –