Qual é a "profundidade" mais básica de qualquer "arquivo contêiner"?

Qual é a "profundidade" mais básica de qualquer "arquivo contêiner"?

Eu uso o termo "arquivo contêiner" para descrever qualquer arquivo que praticamente contenha um arquivo ou dois ou mais arquivos. Alguns exemplos seriam umarquivo tarou umdiretório.

Digamos que eu abro um arquivo tar com algum software GUI de arquivamento ou digamos que eu abro um diretório com algum navegador de arquivos GUI OS e em ambos os casos, de fato, um arquivo, ou dois ou mais arquivos que sãocontidono arquivo contêiner aparecem diante de mim (na primeira profundidade mais básica - sem contabilizar "profundidades mais profundas").

Em geral, qual a profundidade desses arquivos, em sistemas Unix e Linux? É profundidade 0 ou profundidade 1?

Responder1

Para responder sua pergunta, citaria o uso de profundidade no findcomando. Você pode usar o sinalizador --maxdepthpara definir a profundidade máxima em que deseja procurar determinados arquivos. Agora, se você estiver em um diretório (ou arquivo contêiner, para usar suas palavras, embora isso geralmente esteja associado ao docker) com a seguinte estrutura

.
└── dir1
    └── file1

(esta é a saída do comando tree) e execute find -maxdepth 0você obtém apenas .. Ao executar find -maxdepth 1, você obtém o conteúdo real do diretório em que está, também conhecido como ./dir1. Para continuar, uma pesquisa com maxprofundidade 2, é claro, também resulta, ./dir1/file1mas isso já deveria ser óbvio.

Resumindo, os arquivos contidos no diretório em que você está atualmente estão na profundidade 1, não em 0.

Responder2

Esta questão parece ser sobre terminologia. Você está certo em ter cuidado, o termo "profundidade" pode ser complicado e sempre me pego verificando minha própria lógica antes de usá-lo.

Para entender por que a resposta é 1 (e é 1), você precisa entender que a decisão de indexar a partir de 0 ou indexar a partir de 1 não é arbitrária. Na verdade, está descrevendo duas coisas completamente diferentes. Para explicar, pense em uma lista contendo algumas cores [vermelho, azul, roxo]. Podemos falar sobre esta lista de duas maneiras:

  1. Na lista:1st é vermelho,2e é azul,3rd é roxo. Indexando claramente a partir de 1
  2. Roxo é2longe do início da lista, o azul é1longe do início da lista, vermelho é o início da lista -0. Indexação de 0.

Na ciência da computação, é preferível usar um deslocamento (indexação de 0) porque torna a programação matemática mais simples. Mas é importante entender que não estamos apenas “indexando do zero”, estamos descrevendo algo diferente.

A indexação de zero é (virtualmente)sempre um deslocamento, mesmo se houver um zero fantasma.


Com finda terminologia, find está indexando de 0 como um deslocamento do diretório atual. Assim, -maxdepth 1significa começar no diretório atual e explorar 1 camada. Da mesma forma, find . -maxdepth 0é apenas .porque você está iniciando no diretório atual e não expandindo nada.

Até esta discussão, você provavelmente nunca considerou encontrar a profundidade 0. O 0 é um fantasma (não é realmente útil).


Seguindo a partir daí, na terminologia de contêiner, uma profundidade de 0 teria que significar a expansão de zero arquivos zip. Isso significaria que não há contêiner algum. Uma única camada de profundidade (um zip contendo outros arquivos, mas nenhum outro zip) sempre teria profundidade 1 porque você começa fora do contêiner e precisa expandir um contêiner para extrair os arquivos.

informação relacionada