web-dev-qa-db-fra.com

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

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

46
Olivier Lalonde

Il suffit de faire glisser le fichier dans le terminal.

31
Olivier Lalonde
readlink -f foo.bar

ou (installez-le d'abord)

realpath foo.bar
42
spennig

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

Si vous parcourez vos fichiers à l’aide de 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.

11
Sicco

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

$ which your_executable

Par exemple: $ which ls

3
perseo22

Effectuez-vous facilement dans python à l'aide de la fonction os.realpath():

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

A partir de réponse associée , vous pouvez également utiliser readlink

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

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 find dans 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 locate pour obtenir le nom du fichier. (Exécutez Sudo updatedb si 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.

1
belacqua

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 faites un clic droit 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 à la place de son nom.

0
Juan Lanus