Como converter datas de arquivo para um formato particular ao usar 'ls'

1

Eu tenho os seguintes dados de entrada:

-rw-rw-r--. 1 abmnyu abmnyu 0 Dec 30 07:06 ffd_in_imp_bus.dat
-rw-rw-r--. 1 abmnyu abmnyu 0 Dec 30 07:06 ffd_ik_imp_bus.dat

Eu preciso que Dec 30 seja exibido no formato 20171230 usando ls -l , conforme mostrado abaixo:

-rw-rw-r--. 1 abmnyu abmnyu 0 20171230 07:06 ffd_in_imp_bus.dat
-rw-rw-r--. 1 abmnyu abmnyu 0 20171230 07:06 ffd_ik_imp_bus.dat
    
por Nithin Kumar 30.12.2017 / 11:13

1 resposta

5

Se você estiver usando o GNU ls (isso é padrão nos sistemas Linux), ele tem uma opção --time-style que pode ser usada para alterar o formato de data / hora.

O formato interno mais próximo do que você deseja é long-iso .

por exemplo,

$ ls -l --time-style=long-iso
total 1
-rw-r--r-- 1 cas cas 0 2017-12-30 21:26 ffd_ik_imp_bus.dat
-rw-r--r-- 1 cas cas 0 2017-12-30 21:26 ffd_in_imp_bus.dat

Você também pode usar um formato personalizado usando a mesma especificação de formatação de data do GNU date :

$ ls -l --time-style='+%Y%m%d %H:%M'
total 1
-rw-r--r-- 1 cas cas 0 20171230 21:26 ffd_ik_imp_bus.dat
-rw-r--r-- 1 cas cas 0 20171230 21:26 ffd_in_imp_bus.dat

De man ls :

--time-style=STYLE

with -l, show times using style STYLE: full-iso, long-iso, iso, locale, or +FORMAT

FORMAT is interpreted like in 'date'

if FORMAT is FORMAT1<newline>FORMAT2, then FORMAT1 applies to non-recent files and FORMAT2 to recent files.

if STYLE is prefixed with posix-, STYLE takes effect only outside the POSIX locale

    
por 30.12.2017 / 11:28