Файлы вида в каталоге датой создания (Рождение)

В моей папке Download у меня есть много файлов. Мне нужен сначала способ расположить их типом, которым вторые файлы с тем же расположением типа становятся типом, который я добавил (или может сказать загруженный или рождение (если я не ошибаюсь)), их к моей папке Downloads. смотрите, вводят описание ссылки здесь В моем каталоге Downloads, у меня есть PDF, zip и и т.д. когда я перехожу к своему каталогу Downloads Сначала, я хочу видеть, что мои tar.gz вокруг вместе (расположение типом) вторые, мне нужны мои tar.gz файлы, имеют вид времени, когда я добавил к этому каталогу. Например, я ищу пятое самое молодое время рождения tar.gz файл.

3
задан 13 April 2017 в 15:24

1 ответ

Мой предыдущий ответ был, начался с этого неправильного оператора:

Linux не хранит время создания файла

Да - ядро Linux не обеспечивает API для получения меток времени создания от файловой системы.

, Но как это записано в , wiki ext4 обеспечивает метки времени создания файла:

ext4 также добавляет поддержку созданных из даты меток времени. Но, как Theodore Ts'o указывает, в то время как легко добавить дополнительное поле даты создания в inode (таким образом технически разрешающий поддержку созданных из даты меток времени в ext4), более трудно изменить или добавить необходимые системные вызовы, как статистика () (который, вероятно, потребовал бы новой версии), и различные библиотеки, которые зависят от них (как glibc).

Также , как отвечено в <час> unix.stackexchange

Several file systems store the file creation time, 
although there is no standard name for this field:

   - ufs2  → st_birthtime
   - zfs   → crtime
   - ext4  → crtime
   - btrfs → otime
   - jfs   → di_otime

Вот большой вопрос/ответ , как найти штамп создания файла. Сценарий записан @terdon:

get_crtime() {

    for target in "${@}"; do
        inode=$(ls -di "${target}" | cut -d ' ' -f 1)
        fs=$(df  --output=source "${target}"  | tail -1)
        crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null | 
        grep -oP 'crtime.*--\s*\K.*')
        printf "%s\t%s\n" "${target}" "${crtime}"
    done
}

Добавляют этот сценарий к Вашему .bashrc.

Теперь использование этого сценария можно получить то, что Вы хотите.

Переходят к папке, какое содержание Вы хотите отсортировать

$ cd ~/Downloads
$ get_crtime * | sed -r 's/\s+/ /g' | cut -d" " -f1,3,4,6 | sort -k2M -k3,4n

Для tar.gz файлы

$ get_crtime *.tar.gz | sed -r 's/\s+/ /g' | cut -d" " -f1,3,4,6 | sort -k2M -k3,4n
<час>

Источники

2
ответ дан 1 December 2019 в 17:07

Другие вопросы по тегам:

Похожие вопросы: