Uma pesquisa com locate
encontra caminhos no sistema de arquivos.
Muitas vezes, você sabe a priori que está interessado apenas em arquivos ou somente em diretórios.
Uma pesquisa 'localizar' geralmente retorna muitos resultados. Seria útil incluir apenas um dos tipos no resultado, pois ajuda a diminuir a saída.
Mas há um argumento mais interessante para excluir arquivos ou diretórios: porque a lista de caminhos de resultados pode ser ambígua - não apenas na teoria.
O exemplo abaixo é um caso do mundo real, e não incomum:
$ locate --regex --basename "xfce4-keyboard-overlay$"
/usr/local/bin/xfce4-keyboard-overlay
/usr/local/share/xfce4-keyboard-overlay
Ok, encontramos algo! Mas ... arquivos ou diretórios?
$ file /usr/local/bin/xfce4-keyboard-overlay
/usr/local/bin/xfce4-keyboard-overlay: bash script
Então esse é um arquivo ...
$ file /usr/local/share/xfce4-keyboard-overlay
/usr/local/share/xfce4-keyboard-overlay: directory
enquanto o segundo não é.
Essa ambiguidade está dificultando a leitura de longas listas de caminhos; portanto, seria muito bom filtrar diretórios, por exemplo, usando uma opção de linha de comman para locate
.
Será que algo assim existe? Mesmo se o filtro para diretórios estiver separado da localização?
Pelo menos, pode-se usar um script para iterar todos os nomes de arquivos a serem verificados - o que pode ser lento.
while
declaração?