A opção 'find -size 100k' usa kilobytes ou kibibytes?

1

Eu estava procurando no manual do Linux e nesta página , o manual para encontrar, especificamente na seção sobre o teste "-size", ele afirma (erroneamente) que um quilobyte é 1024 bytes . Isto é, até onde eu aprendi, falso. Um kilobyte é 1000 bytes e um kibibyte é de 1024 bytes. Então, quais unidades ele realmente usa? Diz "kilobytes" e significa "1000 bytes", ou "1024 bytes" e escreveu "kilobytes" incorretamente?

    
por user3002473 09.02.2018 / 00:00

2 respostas

1

Bem manchado! A explicação explícita está correta. 1k significa kibibytes (1024 bytes). Eu testei isso criando uma variedade de tamanhos e vendo quais eram identificados.

$ for i in 999 1000 1001 1023 1024 1025; do dd if=/dev/urandom of=$i bs=1 count=$i; done
$ find . -size 1k
.
./1024
./1023
./1001
./1000
./999

Você pode ver que o arquivo de 1024 bytes foi encontrado (e não o arquivo de 1025 bytes).

(Você pode pensar em preencher um relatório de bug, se quiser.)

    
por 09.02.2018 / 00:07
3

O manual em a página que você vincula está desatualizado e incorreto. Uma página de linha onde este erro já foi corrigido é:

-size n[cwbkMG]
File uses n units of space, rounding up. The following suffixes can be used:
'b' for 512-byte blocks (this is the default if no suffix is used)
'c' for bytes
'w' for two-byte words
'k' for Kibibytes (KiB, units of 1024 bytes)
'M' for Mebibytes (MiB, units of 1024 * 1024 = 1048576 bytes)
'G' for Gibibytes (GiB, units of 1024 * 1024 * 1024 = 1073741824 bytes)

O Manual de localização do BSD ainda está incorreto.

O manual mais atualizado é o man find em um SO atualizado.
De uma versão do GNU find (find (GNU findutils) 4.7.0-git) o manual segue como:

-size n[cwbkMG]
File uses n units of space, rounding up. The following suffixes can be used:

'b' for 512-byte blocks (this is the default if no suffix is used)
'c' for bytes
'w' for two-byte words
'k' for Kibibytes (KiB, units of 1024 bytes)
'M' for Mebibytes (MiB, units of 1024 * 1024 = 1048576 bytes)
'G' for Gibibytes (GiB, units of 1024 * 1024 * 1024 = 1073741824 bytes)

Então, o problema já foi solucionado em algumas versões do find.

    
por 09.02.2018 / 00:37

Tags