Respostas:
Você pode usar:
ls -Rt
onde -R
significa recursivo (inclui subdiretórios) e -t
significa "classificar pela data da última modificação".
Para ver uma lista de arquivos classificados por data de modificação, use:
ls -l -Rt
Um alias também pode ser criado para fazer isso:
alias lt='ls -lht'
lt
Onde -h
fornece uma saída mais legível.
ls -lrt[RhA]
. o -r
inverte a ordem de classificação, deixando as coisas editadas recentemente no final da lista ...
-ila
fornece praticamente todas as informações de que você precisa. $ ls -ilaRt
ll -Rt
era a solução perfeita para mim, pois precisava ver os arquivos por data de modificação mais recente. Isso pode ser útil para outras pessoas.
ll
não existe e não é um comando. É principalmente um alias no shell bash, mas não está definido na maioria dos / some /? distribuições do Linux. Alguns o definem como alias ll='ls -l'
em /etc/bash.bashrc ou /etc/.bashrc. Portanto, pode não funcionar e pode não existir no sistema de OPs. Use ls -l -Rt
pelo menos, como ls
é um comando padrão definido por posix. Ou especifique o que você quis dizer alias ll='ls -l'; ll -Rt
.
Se desejar uma lista mestre na qual todos os arquivos sejam classificados por data de modificação, mostrando o diretório em que estão, mas não agrupados por diretório , você pode usar isto:
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
O resultado se parece muito com ls -l
:
-rw-r - r-- 1 root root 3892 11/08/2009 11:03:36 /usr/share/man/man1/xmllint.1.gz -rw-r - r-- 1 root root 22946 13/08/2009 11:59:20 /usr/share/man/man1/curl.1.gz -rw-r - r-- 1 root root 728 08/17/2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz -rw-r - r-- 1 root root 873 18/08/2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz -rw-r - r-- 1 root root 2552 19/08/2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz -rw-r - r-- 1 root root 9546 19/08/2009 02:02:00 /usr/share/man/man1/pidgin.1.gz -rw-r - r-- 1 root root 2201 19/08/2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz -rw-r - r-- 1 root root 926 19/08/2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz -rw-r - r-- 1 root root 18052 19/08/2009 04:11:47 /usr/share/man/man1/mono.1.gz -rw-r - r-- 1 root root 1845 19/08/2009 04:11:47 /usr/share/man/man5/mono-config.5.gz
Para aqueles que usam Mac OS X, a opção -printf não está disponível no BSD find (você obterá este erro :)find: -printf: unknown primary or operator
. Felizmente, você pode instalar o GNU find através do Homebrew (deve haver uma opção para Fink e Macports também):
brew install findutils
Após a instalação, o GNU find deve estar disponível para você como gfind
. Então, tudo que você precisa fazer é alterar a linha acima para:
gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
find
quanto o autor, esses argumentos para -printf
são diretivas de formato que podem ser encontradas em man find
(pesquise a quinta instância de printf
nessa página).
find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' '
fornecerá praticamente a mesma saída no MacOS usando apenas utilitários
sort -r
para reverter a classificação e ter os arquivos modificados mais recentemente no topo.
MAC OSX 2019
Se você não se importa com a hora em que ela foi criada, mas deseja que sua lista seja ordenada, use este comando
==> ls -t
Se você quiser pedir e ver a data e as informações do usuário, use este comando
===> ls -lt
Para os zsh
usuários, você também pode usar qualificadores glob (também documentados em man zshexpn
):
echo *(om)
Onde o
significa ordem de classificação, ativa e m
significa hora da última modificação .
Isso pode ser útil quando usado em um loop for ou outro comando:
for file in *(^om); do
[ -e "$file" ] || continue
# do something with file orderer from least recently modified to last modified
done
Ou encadeado com outro qualificador glob:
last_modified_file=(*(om[1]))