Usando o find com o teste de tamanho

2

Eu originalmente fiz essa pergunta nos fóruns do Ubuntu, e achei que entendi, mas depois vi alguém usar o mesmo comando de uma maneira diferente, e agora não tenho certeza se entendi mais, então eu humildemente pedindo sua ajuda novamente.

É assim que meu diretório padrão Pictures parece:

-rw-rw-r-- 1 mason mason 1.3M Aug 12 21:35 Beijing-trip.jpg
-rw-r--r-- 1 mason mason  26K May 27  2013 Eiffel-tour.jpg
-rw-r--r-- 1 mason mason 1.5M Sep 20  2013 work-buddies.jpg
-rw-r--r-- 1 mason mason 155K Apr  2  2013 Q1-profits.jpg
-rw-r--r-- 1 mason mason 245K Nov 27  2016 Ireland.jpg
-rw-r--r-- 1 mason mason 675K Jun 14  2014 Christmas.jpg
-rw-r--r-- 1 mason mason 210K Nov 27  2016 Thanksgiving.jpg
-rw-r--r-- 1 mason mason 348K May 27  2013 family.jpg
-rw-r--r-- 1 mason mason 805K Feb 27  2015 museum-of-fine-arts.jpg
-rw-r--r-- 1 mason mason 8.6K May 26  2013 4th-of-July.jpg
-rw-r--r-- 1 mason mason  20K Mar  9  2013 Taipei.jpg
-rw-r--r-- 1 mason mason 1.9M Jun 14  2014 Australia.jpg
-rw-r--r-- 1 mason mason 404K Aug 10 21:53 business-trip.jpg
drwxrwxr-x 2 mason mason 4.0K Mar 18 16:55 Wallpapers
-rw-r--r-- 1 mason mason 145K Jan 15  2015 family-reunion.jpg
-rw-r--r-- 1 mason mason 6.7K Apr  2  2013 friends-and-family.jpg

De acordo com a página man do comando find, ao usar o -size test, os tamanhos dos arquivos são arredondados antes de serem processados pelo comando find , mas o que eu gostaria de saber é por quanto? / p>

Especificamente, como é que find . -size -1M não retorna nada, enquanto find . -size -8k imprime o arquivo friends-and-family.jpg e o diretório Papéis de parede? Talvez eu sempre tenha entendido mal isso, mas nos Fóruns do Ubuntu eu aprendi que o arquivo friends-and-family.jpg não aparece na saída depois de digitar find . -size -1M porque o arquivo é arredondado para 1MB, e já que especificamente solicitado por arquivos menores que 1MB, o comando find não imprime o nome do arquivo. Mas se o arquivo friends-and-family.jpg for arredondado para até 1 MB na primeira iteração do comando, como o arquivo friends-and-family.jpg acaba na saída ao digitar find . -size -8k ? O arquivo friends-and-family.jpg não deve ser arredondado novamente para 1 MB? Em caso afirmativo, como é que um ficheiro com um tamanho de 1 MB aparece na saída quando pedimos especificamente ficheiros com menos de 8 KB?

Além das perguntas acima, também preciso saber até que valor os arquivos acima são arredondados ao digitar os seguintes comandos:

find . -size -2M
find . -size -3M
find . -size -8k
find . -size -10k
find . -size -2G

Sua ajuda é muito apreciada.

    
por John_Patrick_Mason 15.08.2017 / 02:07

1 resposta

5

Isso é explicado em a página do manual (grifo meu):

  

Lembre-se de que o tamanho é arredondado para a próxima unidade .   Portanto, -size -1M não é equivalente a -size -1048576c . o   ex-somente corresponde a arquivos vazios, o último corresponde a arquivos de 1 a   1.048.575 bytes.

Nota: a próxima unidade . Com -1M , um arquivo de tamanho 6.7k (~ 0.007M) é arredondado para 1M, porque a unidade em consideração é MB. Da mesma forma, com -8k , o tamanho é arredondado para 7k, já que a unidade atual é KB, e isso está dentro dos limites.

Então, para esses comandos:

find . -size -2M
find . -size -3M
find . -size -8k
find . -size -10k
find . -size -2G

Um tamanho de 6.7k será arredondado para 1M, 1M, 7k, 7k, 1G, respectivamente.

Agora, voltando ao parágrafo citado, você vê porque -size -1x para qualquer unidade x sempre corresponderá apenas a arquivos vazios?

    
por muru 15.08.2017 / 02:21