Minha resposta anterior foi iniciada com esta afirmação errada:
Linux não armazena tempo de criação de arquivos
Sim - o kernel Linux não fornece API para obter carimbos de hora de criação a partir do sistema de arquivos.
Mas, como está escrito em wiki , o ext4 fornece os timestamps de criação de arquivos:
O ext4 também adiciona suporte para registros de data e hora criados por data. Mas, como Theodore Ts'o aponta, enquanto é fácil adicionar um campo extra de data de criação no inode (tecnicamente habilitando suporte para data-criado timestamps no ext4), é mais difícil modificar ou adicionar chamadas de sistema necessárias, como stat () (o que provavelmente exigiria um nova versão) e as várias bibliotecas que dependem delas (como glibc).
Também como respondido em 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
Aqui está uma ótima pergunta / resposta para localizar o carimbo de criação de arquivo. Script escrito por @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
}
Adicione este script ao seu .bashrc.
Agora, usando este script, você pode obter o que deseja.
Ir para a pasta cujo conteúdo você deseja classificar
$ cd ~/Downloads
$ get_crtime * | sed -r 's/\s+/ /g' | cut -d" " -f1,3,4,6 | sort -k2M -k3,4n
Para tar.gz
files
$ get_crtime *.tar.gz | sed -r 's/\s+/ /g' | cut -d" " -f1,3,4,6 | sort -k2M -k3,4n
Fontes