GNU/Linux >> Tutoriales Linux >  >> Linux

Encuentre el archivo y luego cd a ese directorio en Linux

Lo siguiente debería ser más seguro:

cd -- "$(find / -name ls -type f -printf '%h' -quit)"

Ventajas:

  • El guión doble evita la interpretación de un nombre de directorio que comienza con un guión como una opción (find no produce tales nombres de archivo, pero no es dañino y podría ser necesario para construcciones similares)
  • -name verificar antes del -type verifique porque este último a veces requiere un stat
  • Ningún dirname requerido porque el %h el especificador ya imprime el nombre del directorio
  • -quit para detener la búsqueda después del primer archivo encontrado, por lo tanto, no head requerido, lo que haría que la secuencia de comandos fallara en los nombres de directorio que contienen líneas nuevas

Puedes usar algo como:

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _

Esto ubicará el primer ls archivo regular y luego cambie a ese directorio.

En términos de lo que hace cada bit:

  • La búsqueda comenzará en / y busque hacia abajo, listando todos los archivos regulares (-type f ) llamado ls (-name ls ). Hay otras cosas que puedes agregar a find para restringir aún más los archivos que obtienes.
  • La tubería a través de head -1 filtrará todos excepto el primero.
  • $() es una forma de tomar el resultado de un comando y ponerlo en la línea de comando para otro comando.
  • dirname puede tomar una especificación de archivo completa y proporcionarle el bit de ruta.
  • cd solo cambia a ese directorio.

Si ejecuta cada bit en secuencia, puede ver lo que sucede:

pax[/home/pax]> find / -type f -name ls
/usr/bin/ls

pax[/home/pax]> find / -type f -name ls | head -1
/usr/bin/ls

pax[/home/pax]> dirname "$(find / -type f -name ls | head -1)"
/usr/bin

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"

pax[/usr/bin]> _

Linux
  1. Cómo encontrar un archivo en Linux

  2. Cómo encontrar un archivo en Linux en todos los directorios recursivamente

  3. Obtenga el archivo más reciente en un directorio en Linux

  4. ¿Cómo puedo encontrar un archivo/directorio que podría estar en cualquier lugar de la línea de comandos de Linux?

  5. Encontrar un directorio en una terminal de Linux

Cómo encontrar una cadena en un archivo en Linux

Permisos de Linux:cómo encontrar los permisos de un archivo

Cómo encontrar archivos basados ​​en la marca de tiempo en Linux

Cómo encontrar el tamaño total de un directorio en Linux

Cómo encontrar las líneas más largas en un archivo en Linux

El comando find Directory de Linux:Explicación