Você vai querer usar stat
para obter o arquivo metadados:
stat -c $'%y\t%n' * | sort -n | head -8
Estou usando ls -t | head -8
para mostrar os últimos 8 arquivos modificados em um diretório, mas isso só imprime o nome do arquivo.
Existe uma maneira de alterar o comando acima para mostrar também a data de modificação dos nomes dos arquivos?
Você vai querer usar stat
para obter o arquivo metadados:
stat -c $'%y\t%n' * | sort -n | head -8
stat
é uma maneira fácil, mas não é possível imprimir o carimbo de data e hora em um formato como ls -l
. Se você quiser um controle mais refinado sobre o formato, use find
com a opção -printf
, por exemplo, para um formato (quase) ls -l
-like:
find -maxdepth 1 -type f -printf "%T+#%Tb %Td %TH:%TM\t%p\n" | sort -rn | cut -d# -f2- | head -8
O %T+
é necessário para classificar a saída corretamente e ser removido por cut
aftwerwards. Leia man find
para saber mais sobre os poderosos recursos de find
-printf
opção.
$ ls -l
total 0
-rw-rw-r-- 1 dessert dessert 0 May 30 20:22 last week
-rw-rw-r-- 1 dessert dessert 0 Jun 6 17:22 today
-rw-rw-r-- 1 dessert dessert 0 Jun 5 17:22 yesterday
$ stat -c $'%y\t%n' * | sort -n
2018-05-30 20:22:29.919608691 +0200 last week
2018-06-05 17:22:10.207084356 +0200 yesterday
2018-06-06 17:22:01.940284127 +0200 today
$ find -maxdepth 1 -type f -printf "%T+#%Tb %Td %TH:%TM\t%p\n" | sort -rn | cut -d# -f2-
Jun 06 17:22 ./today
Jun 05 17:22 ./yesterday
May 30 20:22 ./last week
$ find -maxdepth 1 -type f -printf "%T+#%Tc\t%p\n" | sort -rn | cut -d# -f2-
Wed 06 Jun 2018 05:22:01 PM CEST ./today
Tue 05 Jun 2018 05:22:10 PM CEST ./yesterday
Wed 30 May 2018 08:22:29 PM CEST ./last week
$ find -maxdepth 1 -type f -printf "%T+\t%p\n" | sort -rn
2018-06-06+17:22:01.9402841270 ./today
2018-06-05+17:22:10.2070843560 ./yesterday
2018-05-30+20:22:29.9196086910 ./last week
O comando ls
não é a ferramenta mais apropriada para usar nesta situação, conforme mostrado por outras respostas. Há uma maneira complicada de extrair as informações desejadas da saída de ls
, embora tenha limitações. É um bom exemplo de como trabalhar com ls
pode se tornar rapidamente complicado.
O problema específico com essa cadeia de comandos é que o uso do comando tr
remove quaisquer ocorrências múltiplas de espaço em branco e substitui por um único espaço em branco. Isso afetará nomes de arquivos, tornando-os inadequados para análise por uma máquina. Analisar sl é geralmente uma atividade desencorajada.
ls -lrt| tail -4| tr -s ' '| cut -d ' ' -f6-| tac
A ordem reversa dos resultados ls
, com a opção -r
, é usada para evitar a saída da linha 'Total' pela opção -l
de ls
, e tac
é usado no final para reordene os resultados depois de eliminar a saída indesejada.