Wie können Sie schnell den vollständigen Pfad zu einer Datei für die Verwendung in Terminal abrufen?


Antworten:


44
readlink -f foo.bar

oder (erst installieren)

realpath foo.bar

Diese Antwort ist genauer als eine akzeptierte.
Kunok

Für den kompletten Ordner: ls | xargs realpath.
Pablo A

1
Der Nachteil readlinkist, dass es funktioniert, auch wenn die Datei nicht existiert. Dies kann Fehler auf sehr seltsame Weise verewigen.
GregRos

32

Ziehen Sie die Datei einfach in das Terminal und legen Sie sie dort ab.


1
Ich schreibe das hier, damit ich es nicht vergesse. Hoffen wir, dass es einigen von Ihnen hilft: D
Olivier Lalonde

Gibt einen Pfad mit dem Präfix "smb: //" für SMB-gemountete Freigaben anstelle des tatsächlichen gemounteten Pfads zurück.
Kupiakos

@Kupiakos: Für mich übersetzt Gnome-Terminal den abgelegten Dateipfad fröhlich in'/home/alexcohn/.gvfs/…'
Alex Cohn

11

Alles gute Antworten; Hier ist ein Tipp für eine andere Situation.

Wenn Sie Ihre Dateien mit Nautilus durchsuchen und den vollständigen Pfad Ihres aktuellen Verzeichnisses anzeigen möchten, drücken Sie CTRL+L. Dadurch werden die Breadcrumb-Schaltflächen vorübergehend in die Adressleiste alten Stils zurückgesetzt, sodass Sie den Pfad kopieren können.


… Aber das ist immer noch smb://-style, daher kann es nicht im Terminal wiederverwendet werden.
Alex Cohn

Interessant; auf meinem System (Ubuntu 13.10) bekomme ich keinen smb://-Style-Pfad.
Sicco

Genau das, wonach ich gesucht habe, ich meine, das Terminal ist ein großartiger Ort für ls, aber manchmal arbeiten Sie in einer Datei Ordneransichten: ')
Edencorbin

3

Wenn es sich um eine ausführbare Datei handelt, führen Sie (in einem Terminal) Folgendes aus:

$ which your_executable

Zum Beispiel: $ which ls


Dies ist die Antwort, die ich gesucht habe
Sharjeel Ahmed

1

Zusätzlich zum Ziehen des Symbols gibt es einige Möglichkeiten, den vollständigen Pfad ohne Nautilus (oder Thunar, Konqueror, et al.) Abzurufen. Sie können dann dreimal klicken oder klicken, ziehen und kopieren, möglicherweise in Ihrem Zwischenablage-Manager * speichern und an der gewünschten Stelle einfügen.
(Pastie, Klipper, Glippy, Glipper, Anamnese)

  • Sie können findin einem Verzeichnis oberhalb Ihrer Datei verwenden. (Wenn Sie nicht wissen, wo es ist, beginnen Sie, wo Ihre Shell Sie [im Allgemeinen] oben in Ihrem Home-Verzeichnis ablegt.)
    find . | egrep filename

  • Mit können locateSie den Dateinamen ermitteln. (Führen Sie sudo updatedbdas Programm aus, falls dies noch nicht geschehen ist.)

Ein realistischeres Beispiel für die Verwendung von find wäre etwa:

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

Um die auszuschneiden, die Sie nicht mögen, zB:

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

locate wird ähnlich verwendet, obwohl grep häufig notwendiger ist:

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

Dies ist nicht die effizienteste Art, dies einzugeben. Wenn ich jedoch eine Datei verloren habe, mache ich dies in der Regel iterativ und füge dabei Grep-Klauseln hinzu.


1

Leicht gemacht in Python mit der os.realpath()Funktion:

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

Aus einer verwandten Antwort können Sie auch verwendenreadlink

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

0

Wenn Sie einfach eine Datei in Nautilus kopieren, wird der vollständige Pfad kopiert.
Fügen Sie es dann in das Terminal ein. Durch einfaches Einfügen erhalten Sie:

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

Wenn Sie mit der rechten Maustaste klicken und "Dateinamen einfügen" wählen, erhalten Sie:

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

mit den Anführungszeichen wie gezeigt.
Dies unterscheidet sich von Windows, das den Dateiinhalt anstelle seines Namens kopiert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.