Como alterar o formato e a posição da data na saída de localização

2

Desculpe se esta é uma questão básica. Diga que eu tenho o seguinte comando. Está configurado para exibir uma lista dos últimos 20 arquivos modificados na minha unidade com os caminhos incluídos.

find -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -20

O comando funciona bem, no entanto, no formato da data e hora, há muita informação, pois também exibe os milissegundos. Minhas perguntas eram como eu removeria isso. Além disso, como eu poderia alterar a posição impressa para que o caminho aparecesse no lado esquerdo e a data no lado direito?

Obrigado a todos.

    
por flowoftruth 21.12.2014 / 02:46

1 resposta

3

Você pode fazer isso:

find -type f -printf '%TY-%Tm-%Td %.8TT %p\n' | sort -r | sed -r 's/(^[^ ]+ [^ ]+) (.+)/ /' | head -20

Colocar .8 entre % e TT modifica esse campo para limitar a 8 caracteres ( hh:mm:ss ). A sed regex move a primeira parte da linha (para conjuntos de caracteres não espaciais com um espaço entre) até o final da linha. É necessário que o tempo esteja no início da linha para o comando sort .

Aviso: Colocar a data após o nome do arquivo pode causar confusão se forem exibidos nomes de arquivos que contenham espaços e números. No entanto, para visualizar como um humano, e não para alimentar outro script ou programa, essa saída deve ser boa.

Caso contrário, deixe os horários na frente dos nomes dos arquivos:

find -type f -printf '%TY-%Tm-%Td %.8TT %p\n' | sort -r | head -20

EDITAR: sed é desnecessário para aparar o segundo fracionário por @ comentário do steeldriver. Esta pode ser uma extensão GNU, mas -printf não parece ser POSIX de qualquer forma. Além disso, bug corrigido de classificação.

    
por 21.12.2014 / 03:01