Frage

Wie Dateien in letzter Änderung, um in Ruby zu bekommen? Ich konnte meine Tastatur genug zerschlagen, dies zu erreichen:

file_info = Hash[*Dir.glob("*").collect {|file| [file, File.ctime(file)]}.flatten]
sorted_file_info = file_info.sort_by { |k,v| v}
sorted_files = sorted_file_info.collect { |file, created_at| file }

Aber ich frage mich, ob es mehr anspruchsvolle Art und Weise, dies zu tun?

War es hilfreich?

Lösung

Wie wäre es einfach:

# If you want 'modified time', oldest first
files_sorted_by_time = Dir['*'].sort_by{ |f| File.mtime(f) }

# If you want 'directory change time' (creation time for Windows)
files_sorted_by_time = Dir['*'].sort_by{ |f| File.ctime(f) }

Andere Tipps

Ein echtes Problem dabei ist, dass * nichts-basierte Dateisysteme nicht halte Erstellungszeiten für Dateien, nur Änderungszeiten.

Windows dieses Programm verfolgen, aber Sie sind in dieses Betriebssystem mit jedem Versuch, beschränken das zugrunde liegende Dateisystem, um Hilfe zu bitten.

Auch ctime bedeutet nicht „Erstellungszeit “es ist‚Wechselzeit‘, die die Änderungszeit des Verzeichnis Info Unter Hinweis auf die Datei.

Wenn Sie die Dateiänderungszeit wollen, ist es mtime , das ist die Wechselzeit der Datei . Es ist ein subtiler, aber wichtiger Unterschied.

Dir.glob("*").sort {|a,b| File.ctime(a) <=> File.ctime(b) }

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top