¿Cómo puede obtener rápidamente la ruta completa a un archivo para usar en la terminal?

47

¿Cómo puede obtener rápidamente la ruta completa a un archivo para usar en la terminal?

Olivier Lalonde
fuente

Respuestas:

44
readlink -f foo.bar

o (instalarlo primero)

realpath foo.bar
Spennig
fuente
Esta respuesta es más precisa que la aceptada.
Kunok
Para la carpeta completa: ls | xargs realpath.
Pablo A
1
La desventaja readlinkes que funcionará incluso si el archivo no existe. Esto puede perpetuar errores de maneras muy extrañas.
GregRos
32

Simplemente arrastre y suelte el archivo en la terminal.

Olivier Lalonde
fuente
1
Voy a poner esto aquí para no olvidarlo. Esperemos que ayude a algunos de ustedes: D
Olivier Lalonde
Devuelve una ruta prefijada "smb: //" para recursos compartidos SMB en lugar de la ruta real montada.
Kupiakos
@Kupiakos: para mí, gnome-terminal traduce felizmente la ruta del archivo caído a'/home/alexcohn/.gvfs/…'
Alex Cohn
11

Todas buenas respuestas; Aquí hay un consejo para otra situación.

Si está explorando sus archivos con nautilus y desea la ruta completa de su directorio actual, presione CTRL+L. Esto cambia los botones de ruta de navegación temporalmente a la barra de direcciones de estilo antiguo, lo que le permite copiar la ruta.

Sicco
fuente
... pero esto sigue siendo de smb://estilo, por lo que no se puede reutilizar en la terminal.
Alex Cohn
Interesante; en mi sistema (Ubuntu 13.10) no obtengo una smb://ruta de estilo.
Sicco
Exactamente lo que estaba buscando, me refiero a que el terminal es un gran lugar para ls, pero hay momentos en los que trabaja en las vistas de una carpeta de archivos: ')
edencorbin
3

Si es un ejecutable, ejecute (en una terminal):

$ which your_executable

Por ejemplo: $ which ls

perseo22
fuente
Esta es la respuesta que estaba buscando
Sharjeel Ahmed
1

Además de arrastrar el ícono, hay algunas formas de obtener el camino completo sin nautilus (o thunar, konqueror, et al.). Luego, debe hacer triple clic o hacer clic y arrastrar y copiar, potencialmente guardando esto en su administrador de portapapeles *, y pegarlo donde lo necesite.
(pastie, klipper, glippy, glipper, anamnesis)

  • Puede usar finden un directorio sobre su archivo. (Si no sabe dónde está, comience donde su shell lo deja caer, [generalmente] en la parte superior de su directorio de inicio).
    find . | egrep filename

  • Puede usar locatepara obtener el nombre del archivo. (Ejecutar sudo updatedbsi eso no se ha hecho recientemente).

Un ejemplo más realista de usar find sería algo como:

$ find | egrep askubuntu | grep txt
./askubuntu-temp.txt
./drDocuments/web/meta.askubuntu.txt
./other/stuff/askubuntu.txt.iteration.1
./other/stuff/askubuntu.txt.iteration.2
[...]

Para cortar los que no te gustan, por ejemplo:

find | egrep askubuntu | grep txt | egrep -v iteration
find | egrep askubuntu | grep txt | egrep -v 'iteration|meta|other'

localizar se usa de la misma manera, aunque grep es frecuentemente más necesario:

locate myfile | egrep home | egrep -v 'mozilla|cache|local|bin|\.pyc|test' | grep \.py

Esta no es la forma más eficiente de escribir esto, pero generalmente si he perdido un archivo, lo hago de forma iterativa, agregando cláusulas grep a medida que avanzo.

belacqua
fuente
1

Fácilmente hecho en python usando la os.realpath()función:

$ python -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' ./VirtualBox\ VMs/                                      
/mnt/HDD/VirtualBox VMs

De una respuesta relacionada , también puedes usarreadlink

$ readlink -e ./out.txt                                                                                                  
/home/username/out.txt
Sergiy Kolodyazhnyy
fuente
0

Si simplemente copia un archivo en Nautilus, se copia la ruta completa.
Luego pégalo en la terminal. Simplemente pegando obtienes:

file:///home/juan/2017/agenda20170101.html

Si hace clic derecho y elige "Pegar nombres de archivos", obtendrá:

'/home/juan/2017/agenda20170101.html'

con las comillas como se muestra.
Esto difiere de Windows, que copia el contenido del archivo en lugar de su nombre.

Juan Lanus
fuente