Comment pouvez-vous rapidement obtenir le chemin complet d'un fichier pour une utilisation dans un terminal?

47

Comment pouvez-vous rapidement obtenir le chemin complet d'un fichier pour une utilisation dans un terminal?

Olivier Lalonde
la source

Réponses:

44
readlink -f foo.bar

ou (installez-le d'abord)

realpath foo.bar
Spennig
la source
Cette réponse est plus précise que celle acceptée.
Kunok
Pour le dossier complet: ls | xargs realpath.
Pablo Un
1
L'inconvénient readlinkest que cela fonctionnera même si le fichier n'existe pas. Cela peut perpétuer les insectes de manière très étrange.
GregRos
32

Il suffit de glisser-déposer le fichier dans le terminal.

Olivier Lalonde
la source
1
Je mets ça ici pour que je n'oublie pas, espérons que cela va aider certains d'entre vous: D
Olivier Lalonde
Renvoie un chemin préfixé "smb: //" pour les partages montés SMB au lieu du chemin monté réel.
Kupiakos
@Kupiakos: pour moi, gnome-terminal traduit avec bonheur le chemin du fichier déposé en'/home/alexcohn/.gvfs/…'
Alex Cohn
11

Toutes les bonnes réponses; Voici un conseil pour une autre situation.

Si vous naviguez dans vos fichiers avec Nautilus et que vous souhaitez connaître le chemin complet de votre répertoire actuel, appuyez sur CTRL+L. Cela modifie temporairement les boutons de navigation dans la barre d'adresses de style ancien, ce qui vous permet de copier le chemin.

Sicco
la source
… Mais c'est toujours du smb://style, donc il ne peut pas être réutilisé dans un terminal.
Alex Cohn
Intéressant; sur mon système (Ubuntu 13.10), je n’ai pas de smb://chemin -style.
Sicco
Exactement ce que je cherchais, je veux dire que le terminal est un endroit génial pour ls mais il y a des fois que vous travaillez dans un dossier de dossiers vues: ')
edencorbin
3

Si c'est un exécutable, alors exécutez (dans un terminal):

$ which your_executable

Par exemple: $ which ls

perseo22
la source
C'est la réponse que je cherchais
Sharjeel Ahmed
1

En plus de faire glisser l'icône, il existe plusieurs façons d'obtenir le chemin complet sans nautile (ou thunar, konqueror, et autres). Vous devez ensuite cliquer trois fois ou cliquer-glisser-copier et copier, enregistrez éventuellement ceci dans votre gestionnaire de Presse-papiers * et collez-le à l'endroit souhaité.
(pastie, klipper, glippy, glipper, anamnèse)

  • Vous pouvez utiliser finddans un répertoire au-dessus de votre fichier. (Si vous ne savez pas où il se trouve, commencez par l'endroit où votre shell vous dépose, [généralement] en haut de votre répertoire personnel.)
    find . | egrep filename

  • Vous pouvez utiliser locatepour obtenir le nom du fichier. (Exécuter sudo updatedbsi cela n'a pas été fait récemment.)

Un exemple plus réaliste d'utilisation de find serait quelque chose comme:

$ 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
[...]

Pour découper ceux que vous n'aimez pas, par exemple:

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

LOCAL est utilisé à peu près de la même manière, bien que grep soit souvent plus nécessaire:

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

Ce n'est pas le moyen le plus efficace de taper cela, mais généralement si j'ai perdu un fichier, je le fais de manière itérative, en ajoutant des clauses grep au fur et à mesure.

Belacqua
la source
1

Facilement fait en python en utilisant la os.realpath()fonction:

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

À partir d’une réponse associée , vous pouvez également utiliserreadlink

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

Si vous copiez simplement un fichier dans Nautilus, le chemin complet est copié.
Puis collez-le dans le terminal. En collant, vous obtenez:

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

Si vous cliquez avec le bouton droit de la souris et choisissez "Coller les noms de fichiers", vous obtenez:

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

avec les citations comme indiqué.
Cela diffère de Windows, qui copie le contenu du fichier au lieu de son nom.

Juan Lanus
la source