Por que a saída do find é classificada no Cygwin, mas não no Solaris?

2

Eu me pergunto por que find não se comporta da mesma maneira no Solaris como no Cygwin ou no Linux.

Eu tenho um monte de diretórios que possuem arquivos chamados CS########## . Cada # é um dígito, mas sempre há 10 dígitos após o CS.

Ao usar find no Cygwin, a lista sai ordenada: CS000000001 to CS00002345 . Ao usar find no Solaris, a lista sai completamente desordenada.

Gostaria de saber se isso é realmente relacionado ao sistema operacional ou se é devido à implementação do find.

    
por BitsOfNix 27.03.2013 / 02:02

1 resposta

3

find não classifica sua saída. A ordem dos nomes dos arquivos depende da ordem em que as entradas do diretório aparecem no sistema de arquivos. Você não pode controlar isso, seja no Solaris ou no Windows.

Em alguns sistemas de arquivos, se você criar um diretório e adicionar arquivos a ele, os arquivos aparecerão na ordem em que são adicionados. Provavelmente, é por isso que eles são classificados no Windows. Mas esse não é o caso em todos os lugares (eu não acho que seja sempre o caso dos zfs do Solaris, por exemplo), e se você começar a remover arquivos no diretório e adicionar outros, a ordem é imprevisível na maioria dos sistemas de arquivos. >

Alguns sistemas de arquivos têm previsibilidade, mas a maioria não. O HFS + do Mac OS / OSX e o Reiserfs do Linux classificam os nomes dos arquivos em ordem lexicográfica de bytes (observe que a localidade do processo pode ter uma ordem diferente). O ext2 / ext3 / ext4 do Linux não classifica. Não é algo que você possa contar.

Se você precisar de uma saída classificada de find , canalize-a para sort .

    
por 27.03.2013 / 02:10