Quiero encontrar un archivo y luego ingresar al directorio que lo contiene. Lo intenté find /media/storage -name "Fedora" | xargs cd
pero, por supuesto, el is not a directory
error.
¿Cómo ingreso su directorio padre con un comando de una línea?
shopt -s globstar
, podría cd /media/storage/**/Fedora
, pero eso no deja de evaluar el glob en la primera coincidencia (por lo que es más lento que la solución de Steeldriver. Para uso interactivo, lo que normalmente haría es alcanzar el mouse y copiar / pegar el nombre del directorio, (y alt + retroceso según sea necesario para quitar los componentes de ruta de acceso que no quería), pero si haces esto mucho, supongo que valdría la pena hacer una función de shell.
xargs cd
no puede funcionar. cd
solo puede funcionar como un shell incorporado, ya que tiene que modificar el contexto del shell en sí. No hay forma de que un xargs
proceso secundario pueda hacer eso. IDK si eso es lo que quiso decir con "por supuesto", o si la ruta que se find
imprime contiene espacios, que se dividen en xargs ya que no los usó -d \n
ni nada. O find -exec {} \;
.
cd
así. cd
es un bash incorporado, si cd
fuera un comando separado, entonces cambiaría (su propio) directorio, y luego se cerraría (regresando al shell, que está en el mismo estado que antes, sin cambio de directorio).