
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 find
comando. Você pode usar o sinalizador --maxdepth
para 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 0
você 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/file1
mas 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:
- Na lista:1st é vermelho,2e é azul,3rd é roxo. Indexando claramente a partir de 1
- 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 find
a terminologia, find está indexando de 0 como um deslocamento do diretório atual. Assim, -maxdepth 1
significa 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.