11 ответов:
к сожалению, Ваш квест будет невозможен в целом, так как для каждого из ваших файлов хранятся только 3 различных значения времени, определенных стандартом POSIX (см. базовые определения раздел 4.8 файл раз обновить)
каждый файл имеет три различных связанных временных метки: время последнего доступ к данным, время последнего изменения данных и время файла последнее изменение статуса. Эти значения возвращаются в файле структура характеристик struct stat, как описано в
. EDIT: как указано в комментариях ниже, в зависимости от используемой файловой системы метаданные могут содержать дату создания файла. Обратите внимание, однако хранение такой информации не является стандартным. В зависимости от этого может привести к проблемам переносимости перемещения в другую файловую систему, в случае, если тот, который фактически используется, каким-то образом сохраняет его в любом случае.
ls -i file #output is for me 68551981 debugfs -R 'stat <68551981>' /dev/sda3 # /dev/sda3 is the disk on which the file exists #results - crtime value [root@loft9156 ~]# debugfs -R 'stat <68551981>' /dev/sda3 debugfs 1.41.12 (17-May-2010) Inode: 68551981 Type: regular Mode: 0644 Flags: 0x80000 Generation: 769802755 Version: 0x00000000:00000001 User: 0 Group: 0 Size: 38973440 File ACL: 0 Directory ACL: 0 Links: 1 Blockcount: 76128 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x526931d7:1697cce0 -- Thu Oct 24 16:42:31 2013 atime: 0x52691f4d:7694eda4 -- Thu Oct 24 15:23:25 2013 mtime: 0x526931d7:1697cce0 -- Thu Oct 24 16:42:31 2013 **crtime: 0x52691f4d:7694eda4 -- Thu Oct 24 15:23:25 2013** Size of extra inode fields: 28 EXTENTS: (0-511): 352633728-352634239, (512-1023): 352634368-352634879, (1024-2047): 288392192-288393215, (2048-4095): 355803136-355805183, (4096-6143): 357941248-357943295, (6144 -9514): 357961728-357965098
mikyra это хорошо.Дело в том, что именно так он и сказал.
[jason@rh5 test]$ stat test.txt File: `test.txt' Size: 0 Blocks: 8 IO Block: 4096 regular empty file Device: 802h/2050d Inode: 588720 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 500/ jason) Gid: ( 500/ jason) Access: 2013-03-14 01:58:12.000000000 -0700 Modify: 2013-03-14 01:58:12.000000000 -0700 Change: 2013-03-14 01:58:12.000000000 -0700Если вы хотите проверить, какой файл был создан первым, вы можете структурировать имя файла, добавив системную дату при создании серии файлов.
обратите внимание, что если у вас есть файловая система, смонтированная с noatime по соображениям производительности, то atime, скорее всего, покажет время создания. Учитывая, что noatime приводит к значительному повышению производительности (путем удаления записи на диск при каждом чтении файла), это может быть разумный вариант конфигурации, который также дает вам желаемые результаты.
меню ls-I.xml
меню 94490.XML Здесь число 94490 представляет собой индекс
затем:
df-h
Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg-root 4.0G 3.4G 408M 90% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 124M 27M 92M 23% /boot /dev/mapper/vg-var 7.9G 1.1G 6.5G 15% /varчтобы найти точку монтирования корневой файловой системы"/", потому что меню файлов.xml находится на ' / 'то есть' /dev / mapper/vg-root'
debugfs-R 'stat ' /dev/mapper/vg-root
выход может быть как один ниже:
debugfs-R ' stat ' /dev / mapper/vg-root
debugfs 1.41.12 (17-May-2010) Inode: 94490 Type: regular Mode: 0644 Flags: 0x0 Generation: 2826123170 Version: 0x00000000 User: 0 Group: 0 Size: 4441 File ACL: 0 Directory ACL: 0 Links: 1 Blockcount: 16 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x5266e438 -- Wed Oct 23 09:46:48 2013 atime: 0x5266e47b -- Wed Oct 23 09:47:55 2013 mtime: 0x5266e438 -- Wed Oct 23 09:46:48 2013 Size of extra inode fields: 4 Extended attributes stored in inode body: selinux = "unconfined_u:object_r:usr_t:s00" (31) BLOCKS: (0-1):375818-375819 TOTAL: 2где вы можете увидеть время создания:
ctime: 0x5266e438 -- Wed Oct 23 09:46:48 2013
вы можете найти время создания-ака время рождения-с помощью стат а также матч с помощью найти.
у нас есть эти файлы, показывая время последнего изменения:$ ls -l --time-style=long-iso | sort -k6 total 692 -rwxrwx---+ 1 XXXX XXXX 249159 2013-05-31 14:47 Getting Started.pdf -rwxrwx---+ 1 XXXX XXXX 275799 2013-12-30 21:12 TheScienceofGettingRich.pdf -rwxrwx---+ 1 XXXX XXXX 25600 2015-05-07 18:52 Thumbs.db -rwxrwx---+ 1 XXXX XXXX 148051 2015-05-07 18:55 AsAManThinketh.pdfнайти файлы, созданные в течение определенного периода времени, используя найти как ниже.
очевидно, что файловая система знает о времени рождения файл:$ find -newerBt '2014-06-13' ! -newerBt '2014-06-13 12:16:10' -ls 20547673299906851 148 -rwxrwx--- 1 XXXX XXXX 148051 May 7 18:55 ./AsAManThinketh.pdf 1407374883582246 244 -rwxrwx--- 1 XXXX XXXX 249159 May 31 2013 ./Getting\ Started.pdf
мы можем подтвердить это с помощью stat:$ stat -c "%w %n" * | sort 2014-06-13 12:16:03.873778400 +0100 AsAManThinketh.pdf 2014-06-13 12:16:04.006872500 +0100 Getting Started.pdf 2014-06-13 12:16:29.607075500 +0100 TheScienceofGettingRich.pdf 2015-05-07 18:32:26.938446200 +0100 Thumbs.db
стат man pages объясняет %w:%w time of file birth, human-readable; - if unknown
Как объяснил @mikyra, время создания даты нигде не хранится.
все вышеперечисленные методы хороши, но если вы хотите быстро получить только последнюю дату изменения, вы можете ввести:
ls -lit /pathС - t опция вы перечисляете все файлы в / path odered по дате последнего изменения.
Если вы действительно хотите достичь этого, вы можете использовать файловый наблюдатель, например inotifywait.
вы смотрите каталог и сохраняете информацию о создании файлов в отдельном файле за пределами этого каталога.
while true; do change=$(inotifywait -e close_write,moved_to,create .) change=${change#./ * } if [ "$change" = ".*" ]; then ./scriptToStoreInfoAboutFile; fi doneпоскольку время создания не сохраняется, вы можете построить свою собственную систему на основе inotify.
цитируется из https://unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4/131347#131347, следующий shellscript будет работать, чтобы получить время создания:
get_crtime() { for target in "${@}"; do inode=$(stat -c %i "${target}") fs=$(df "${target}" | tail -1 | awk '{print }') crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null | grep -oP 'crtime.*--\s*\K.*') printf "%s\t%s\n" "${target}" "${crtime}" done }
еще лучше:
lsct () { debugfs -R 'stat <'`ls -i "" | (read a b;echo -n $a)`'>' `df "" | (read a; read a b; echo "$a")` 2> /dev/null | grep --color=auto crtime | ( read a b c d; echo $d ) }lsct / etc
Ср 20 Июля 19:25: 48 2016
Comments