Упорядочить файлы по времени создания в миллисекундах в Bash - PullRequest
5 голосов
/ 28 сентября 2010

Мне нужно создать список файлов, которые находятся на моем жестком диске в порядке их поступления на жесткий диск.Для этого я использовал следующее:

ls -lat

, в котором перечислены все файлы в порядке даты / времени, однако он упорядочивает их только с точностью до секунды.Проблема здесь в том, что существуют тысячи файлов, и очень часто некоторые из них объединяются в одну секунду.Мне нужен точный правильный порядок.Я предполагаю, что самый простой способ сделать это - получить время создания до милли (или, возможно, нано) секунды.Чтобы сделать это, я попытался использовать следующее:

stat $myfile

, чтобы посмотреть время модификации, но оно всегда показывает час: минута: секунда.00000000000.

Есть ли способ сделать это?Спасибо, Рик

Ответы [ 3 ]

3 голосов
/ 28 сентября 2010

Точность зависит от используемой вами файловой системы, но даже с высокоточной файловой системой, такой как ext4, стандартная реализация stat использует time_t с разрешением в 1 секунду.

Если у вас есть доступк источнику программы, выплевывающему все эти файлы, попробуйте вместо этого установить временную метку как часть имени файла, а затем сортировать по имени файла, а не по времени модификации.

2 голосов
/ 28 сентября 2010

Я не уверен, что это возможно. Мои рассуждения:

Если вы посмотрите на вызов функции stat () , вы увидите, что он возвращает структуру, содержащую информацию о файле. Один из его членов таков:

time_t    st_mtime;   /* time of last modification */

И если вы посмотрите на структуру time_t, ну, Википедия говорит это :

Unix и POSIX-совместимые системы реализовать time_t как целое число или реальный плавающий тип (обычно 32- или 64-разрядное целое число), которое представляет количество секунд с начало эпохи Unix ...

Это означает, что время stat () выражено в секундах, а не в миллисекундах. Я не смотрел, как каждый индекс хранит информацию о файле, но он может не хранить информацию до миллисекунды.

Альтернативой может быть добавление значения мельницы / микросекунды к самому имени файла при его создании и упорядочение их таким образом?

2 голосов
/ 28 сентября 2010

вам, вероятно, придется написать собственную команду stat, используя stat (2) function

...