Classifique os arquivos no diretório pela data de criação (Nascimento)

3

Na minha pasta de Download eu tenho um monte de arquivos.Eu preciso primeiro uma maneira de organizá-los por tipo segundo arquivos com arranjo tipo mesmo tornar-se pelo tipo que eu adicionei (ou posso dizer baixado ou nascimento (se não estou errado )) para a minha pasta de Downloads. por favor, dê uma olhada digite a descrição do link aqui No meu diretório de downloads eu tenho pdf, zip e etc quando eu vou para o meu diretório de downloads Primeiro eu quero ver o meu tar.gz são em torno juntos (organizar por tipo) segundo eu preciso meus arquivos tar.gz ter tipo de tempo quando Eu adicionei a este diretório. Por exemplo, eu estou procurando o quinto arquivo tar.gz de tempo de nascimento mais jovem.

    
por Mohammad Reza Rezwani 05.04.2014 / 07:55

1 resposta

2

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

por c0rp 05.04.2014 / 10:48