Como localizo o último arquivo criado no diretório atual em uma máquina Linux?
Nota: Não sei as horas.
linux
filesystems
rajendra
fonte
fonte
xargs
? As outras respostas, tubulaçõesls
emhead
outail
, lidar com nomes de arquivos com espaços, e suaxargs
solução não lidar com nomes de arquivos com novas linhas.O Linux não armazena um registro de data e hora para o nascimento de um arquivo, mas se nenhum outro arquivo foi alterado no diretório desde a sua criação, você pode classificar os arquivos pela hora da modificação e retornar o primeiro.
fonte
-1
;ls
automaticamente entra em um arquivo por modo de linha quando a saída é redirecionada. (2) Você não precisa dizer-a
, no caso do nome do arquivo começa com um período.-a
pode ser..
ou.
pode ser um problema para determinados scripts.ls -A
que os arquivos mostram DOT no exceção de..
e.
.
e..
. (A novamente, uma vez que a questão diz “último criado arquivo ”, a resposta certa pode serls -atl | grep "^-" | head -1
.)Se você estiver em um sistema de arquivos ext, poderá usar
debugfs
para obter a data de criação de um inode . Portanto, você pode coletar os inodes para cada arquivo no diretório atual e classificar por hora de criação:Salve o script acima como
~/bin/get_newest.sh
, torne-o executável (chmod 744 get_newest.sh
) e execute assim:NOTAS
Diferentemente das outras respostas, este realmente retornará o arquivo mais recente em termos de data de criação , não aquele que foi modificado mais recentemente.
Ele funcionará apenas em sistemas de arquivos ext4 (talvez 3, não tenho certeza).
Ele pode lidar com quaisquer nomes de arquivos, espaços e novas linhas, etc. não são um problema.
fonte
Os sistemas de arquivos Unix clássicos não armazenam o tempo de criação do arquivo. O mais próximo que você fica dos sistemas de arquivos clássicos é o tempo de criação do inode. Não é quando o arquivo é criado no diretório atual, mas quando foi criado nesse sistema de arquivos. Se ele se move, o inode é movido, mas o tempo de criação permanece o mesmo. Se você "mover" os sistemas de arquivos, isso é realmente uma cópia + rm e o inode é criado no novo sistema de arquivos. Isso pode ou não ser o que você deseja.
O comando:
ls -1c | head -1
encontrará o último horário de criação do inode.fonte
ls –c
mostra o tempo de mudança do inode , que é semelhante ao tempo de modificação, mas ainda pior (ainda mais volátil). (E ver o meu outro comentário sobrels -1
.)e o último arquivo mostrado na parte inferior é o mais novo.
fonte