13 votos

Mostrar la ruta completa del archivo en el terminal

Tengo un archivo. Me gustaría hacer eco de la ruta completa a la misma en el terminal.

¿Qué comando lo haría?

19voto

Serg Puntos 17677

Utilice readlink con -e flag. No sólo le da la ruta completa al archivo, sino que también presenta la ruta real de los enlaces simbólicos

$ readlink -e ./out.txt                                                                                                  
/home/xieerqi/out.txt

Personalmente lo uso en mis propios scripts siempre que es necesario obtener la ruta completa de un archivo

1 votos

$ readlink -e README.md readlink: opción ilegal -- e uso: readlink [-n] [archivo ...]

0 votos

@KarlMorrison ¿Estás usando Ubuntu? Ubuntu utiliza la versión GNU de readlink que tiene esa opción. BSD y Mac os no la tienen

9voto

scape Puntos 285

Lo encontré:

sudo apt-get install realpath

Entonces:

realpath MY_FILE

4 votos

Puede utilizar locate comando de mlocate paquete también.

0 votos

En mi opinión, no es necesario instalar algo para que tipo de tarea ..

0 votos

@StefanFalk ¿Te importa responder con una solución muy fácil entonces?) Esto tampoco me gusta pero es rápido y me muestra lo que necesito.

5voto

shawjia Puntos 394

Si no conoce la ubicación del archivo, utilice find comando.

find / -name MY_FILE

Se imprimirá la ruta completa de MY_FILE a partir de / .

o puede utilizar find $PWD -name MY_FILE para buscar en el directorio actual.

Si conoce la ubicación de MY_FILE luego ir a la carpeta que contiene MY_FILE y utilizar

pwd para imprimir la ruta completa de MY_FILE .

2 votos

Para buscar en el directorio actual también puede utilizar find $PWD -name en lugar de find . -name y todos los resultados incluirán la ruta real en lugar de la ./ símbolo.

0 votos

@GeorgeVasiliou Gracias por los comentarios. Actualizaré mi respuesta.

0voto

Olivier Dulac Puntos 406

Aquí hay una función para mostrar las rutas de los archivos, es posible que sólo necesite la parte "fpath=...." ?

pathtofile () { : "gives full path to files given in parameters.";
  for f in "$@"; do
    fpath="$(
      cd -P "$(dirname "$f")" && \
      printf '%s\n' "$(pwd)/$(basename "${f}")" || \
      { echo "__An error occured while determining path to file: '${f}'."\
             "Maybe your user can't access its directory, most likely?__"
      }  )"
    printf "Full path to: %s\n          is: %s\n" "'${f}'" "'${fpath}'";
  done
}

Usar con:

pathtofile   file1  ../file2  /some/pathwithsymlink/file3

La parte importante: cd -P somedir : muestra la ruta completa "real" a somedir.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: