Necesito encontrar una imagen, digamos ABC.jpg, que sé que se habrá colocado programáticamente en un directorio llamado ABC_MPSC. He intentado:
cd /
find . -name "ABC_MPSC/ABC.jpg"
Pero eso no devuelve nada (en realidad sé dónde está el que estoy buscando, así que sé que existe). ¿Existe un comando de búsqueda que me permita no tener que buscar manualmente?
locate
, que debería ser significativamente más rápido, pero solo funciona si el archivo ya existía laupdatedb
última vez que se ejecutó.Respuestas:
Hay un
-path
predicado que es útil aquí:La descripción de POSIX para ese predicado es:
La razón por la que
-name "ABC_MPSC/ABC.jpg"
falló es porque el-name
predicado:En otras palabras,
-name
nunca ve el directorio del nombre de archivo actual, solo el nombre de archivo base (ABC.jpg, por ejemplo).fuente
Dos formas (aparte de usar
-path
):Busque el directorio, luego detecte el archivo:
Esto se basa en la
find
implementación para expandirse{}
al nombre de ruta actual del directorio encontrado, aunque esté concatenado con/ABC.jpg
(no es necesario hacerlo). También podría escribirse comoBusque el archivo, luego verifique el nombre del directorio principal:
Ambas alternativas serían más lentas que usarlas
-path
como lo muestra Jeff. Sin embargo, los dejo aquí como ejemplos, ya que posiblemente podrían adaptarse para otras cosas.fuente