Questão de Sistemas Operacionais — Linux — Quadrix 2025
- Código
- qg594782
- Banca
- Quadrix
- Órgão
- CFBio
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Sistemas
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: letra E (Errado). O comando locate não aceita as opções -type, -name e -path — essas são opções do comando find. O locate apenas busca nomes de arquivos em um banco de dados pré-construído, sem suporte a filtros por tipo, nome ou caminho. Para realizar a busca descrita, o comando correto seria find /dados/cfbio -type f ! -name "*.bin" ! -path "*/.*".
O comando locate é uma ferramenta de busca rápida que consulta um banco de dados indexado (geralmente /var/lib/mlocate/mlocate.db), atualizado periodicamente pelo comando updatedb. Ele é eficiente para encontrar arquivos pelo nome, mas não possui opções para filtrar por tipo de arquivo (-type), nome (-name) ou caminho (-path). Essas opções são exclusivas do comando find, que percorre a árvore de diretórios em tempo real, aplicando os critérios especificados.
Para entender a diferença prática: se você executar locate /dados/cfbio -type f, o locate interpretará -type como parte do padrão de busca (ou seja, procurará por arquivos cujo nome contenha "-type"), não como uma opção de filtro. O resultado seria uma busca por nomes de arquivos que contenham a string "-type", o que não atende ao objetivo. Já o find interpreta -type f como "apenas arquivos regulares", ! -name "*.bin" como "excluir arquivos com extensão .bin" e ! -path "*/.*" como "excluir caminhos que contenham um componente oculto (começando com ponto)".
A confusão entre locate e find é comum, mas a distinção é clara: locate é uma busca por nome em um índice prévio, enquanto find é uma busca recursiva com filtros avançados. A banca explora exatamente essa troca de comandos, apresentando opções do find como se fossem do locate.
A banca troca o comando find pelo locate, mantendo as opções -type, -name e -path que são exclusivas do find. O candidato que conhece apenas a sintaxe, sem saber a qual comando cada opção pertence, pode ser induzido a marcar "Certo". Lembre-se: locate só busca por nome no banco de dados; find é quem aceita filtros por tipo, nome e caminho.
O comando apresentado está incorreto porque locate não suporta as opções -type, -name e -path. Essas opções pertencem ao comando find. O comando correto para a tarefa descrita seria:
find /dados/cfbio -type f ! -name "*.bin" ! -path "*/.*"O find percorre o diretório /dados/cfbio e seus subdiretórios, selecionando apenas arquivos regulares (-type f), excluindo aqueles com extensão .bin (! -name "*.bin") e excluindo caminhos que contenham componentes ocultos (! -path "*/.*"). O locate, por sua vez, apenas consulta o banco de dados de nomes de arquivos, sem capacidade de filtrar por tipo ou caminho.
Gabarito: letra E (Errado).
Link permanente: /questoes/qg594782