Preciso encontrar uma imagem, digamos ABC.jpg, que eu sei que terá sido programaticamente colocada em um diretório chamado ABC_MPSC. Eu tentei:
cd /
find . -name "ABC_MPSC/ABC.jpg"
Mas isso não retorna nada (na verdade eu sei onde está o particular que estou procurando, então sei que ele existe). Existe um comando find que me permita não precisar pesquisar manualmente?
locate
, que deve ser significativamente mais rápido, mas funciona apenas se o arquivo já existia naupdatedb
última execução.Respostas:
Há um
-path
predicado que é útil aqui:A descrição do POSIX para esse predicado é:
A razão pela qual você
-name "ABC_MPSC/ABC.jpg"
falhou é porque o-name
predicado:Em outras palavras,
-name
nunca vê o diretório do nome do arquivo atual, apenas o nome do arquivo base (ABC.jpg, por exemplo).fonte
Duas maneiras (além de usar
-path
):Procure o diretório e detecte o arquivo:
Isso depende da
find
implementação para expandir{}
para o nome do caminho atual do diretório encontrado, mesmo que concatenado com/ABC.jpg
(não é necessário fazer isso). Também poderia ser escrito comoProcure o arquivo e verifique o nome do diretório pai:
Ambas as alternativas seriam mais lentas do que
-path
as usadas como Jeff mostra. Estou deixando-os aqui como exemplos, no entanto, pois eles poderiam ser adaptados para outras coisas.fonte