whereis(1)
não parece adequado ao seu propósito, já que não é geral ferramenta de busca de nome de caminho de propósito.
Sem um índice de pesquisa
Como Gilles observou em sua resposta, você pode usar find(1)
para este trabalho mas eu quero fazer uma pequena melhoria significativa 1 :
find [PATH...] -depth -path '*gmai*' -print # -delete
Explicação:
-
find [PATH...]
passa por todos os arquivos e subdiretórios abaixo de cada PATH
ou dos diretórios de trabalho atuais, se nenhum caminho foi fornecido, e imprime todas as correspondências (por padrão).
-
-path PATTERN
corresponde a caminhos completos contra PATTERN
usando globbing se houver, portanto *gmai*
corresponde a todos os nomes de caminho com infix gmai
.
-
-delete
exclui todos os caminhos correspondentes (e substitui a ação padrão para imprimi-los).
-
-depth
instrui find
para corresponder aos filhos antes dos pais, i. e. entradas de diretório antes dos próprios diretórios pai. É necessário excluir crianças antes de seus pais, porque, na semântica do sistema de arquivos Unix, apenas os diretórios vazios podem ser excluídos.
-
-print
imprime todos os caminhos correspondentes. Use isso para verificar o resultado antes da exclusão real. Comente no comando -delete
(removendo #
na frente dele) para excluí-los.
Com um índice de pesquisa
Se todos os locais que você pretende excluir aparecerem no mlocate.db(5)
você pode usá-lo para pesquisas mais rápidas:
locate '/your/parent/path/*gmai*'
pesquisa todos os caminhos (indexados) que começam com /your/parent/path/
e têm um infix gmai
no restante. Este comando só lista os resultados da pesquisa.
Para excluir os resultados, use:
locate -0 '/your/parent/path/*gmai*' | xargs -r -0 -- rm -rf --
Explicação:
-
|
redireciona a saída do comando do lado esquerdo para a entrada do comando do lado direito.
-
xargs
coleta "itens" de sua entrada, acrescenta para um determinado comando e executa esse comando.
-
-r
faz xargs
não executar o comando se nenhum item de entrada ocorrer.
-
rm -rf
remove arquivos e diretórios recursivamente
-
-0
indica locate
para delimitar correspondências por nulos-bytes e xargs
para aceitar itens de entrada separados por nulo. Isso evita problemas com nomes de caminhos que contêm espaços em branco e, mais especificamente, caracteres de quebra de linha.
1 que ele incorporou em sua resposta antes que a questão fosse reaberta e me permitisse responder.