Preciso encontrar uma imagem, digamos ABC.jpg, que sei que foi colocada programaticamente em um diretório chamado ABC_MPSC. Eu tentei:
cd /
find . -name "ABC_MPSC/ABC.jpg"
Mas isso não retorna nada (eu realmente sei onde está o que estou procurando, então sei que existe). Existe um comando find que poderia me permitir não ter que pesquisar manualmente?
Há um
-path
predicado que é útil aqui:A descrição 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 próprio nome do arquivo base (ABC.jpg, por exemplo).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 esteja 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 usar
-path
da maneira que Jeff mostra. Estou deixando-os aqui como exemplos, no entanto, pois eles poderiam ser adaptados para outras coisas.