Quero resolver o problema 'liste os 10 arquivos mais recentes do diretório atual com mais de 20 MB'.
Com ls
eu posso fazer:
ls -Shal |head
para obter os 10 principais arquivos maiores e:
ls -halt |head
para obter os 10 arquivos mais recentes
Com o achado eu posso fazer:
find . -size +20M
Para listar todos os arquivos com mais de 20 MB no diretório atual (e subdiretórios, que eu não quero).
Existe alguma maneira de listar os dez principais arquivos mais recentes em um determinado tamanho, de preferência usando ls
?
file
's-ls
comando, os caracteres especiais serão impressos como caracteres escapou-barra invertida:find . -maxdepth 1 -size +20M -printf "%T@ " -ls | sort -nr | head -n 20 | sed 's/[^ ]\+ //'
. Além disso, o formato será parecido com ols -l
EoghanM, também especificado de-l
qualquer maneira.printf
só funciona para distribuições GNU específicas.%T+
gera data e hora legíveis pelo ser humano como2018-11-06+13:37:54.4606466460
o que também são classificáveis porsort
(sem-n
), ver: unix.stackexchange.com/questions/29899/...Os qualificadores Glob do Zsh facilitam isso. O
.
qualificador seleciona apenas arquivos regulares,Lm+20
seleciona arquivos com pelo menos 20 MB mais um byte; para incluir arquivos com exatamente 20 MB, useL+20971519
. Em seguida,om
classifica diminuindo o tempo de modificação e[1,10]
restringe a expansão às 10 primeiras correspondências. Você ainda precisa da-t
opçãols
se deseja listar os arquivos por data; ou você pode passar os arquivos para algum outro comando (o mais jovem primeiro). Para passar os arquivos para outro comando com o arquivo mais antigo primeiro, useOm
para classificar aumentando o tempo de modificação e[-10,-1]
extrair as últimas 10 correspondências.fonte
Eu acho que essa pode ser uma maneira melhor de resolver o problema ...
Para se livrar de qualquer erro ao encontrar tentativas de acessar arquivos que você não tem permissão para ler, você pode adicionar
fonte
Isso imprimirá apenas os 10 arquivos especificados, independentemente de quaisquer caracteres de nova linha incorporados nos nomes dos arquivos. Ele usa sistema de arquivos
inodes
fonte
Obrigado por todas as respostas. O que eu busquei é o seguinte:
Embora renuncie aos 20 megabytes em favor de qualquer coisa acima de um megabyte (e abaixo de um gigabyte), é fácil lembrar e preservar o elemento legível humano do tamanho do arquivo.
fonte
ls
, ela mostra uma representação de arquivos, nada mais. Para nomes simples de arquivos, a saída é equivalente ao nome do arquivo, mas você não deve confiar nele.