Wie können Sie schnell den vollständigen Pfad zu einer Datei für die Verwendung in Terminal abrufen?
Wie können Sie schnell den vollständigen Pfad zu einer Datei für die Verwendung in Terminal abrufen?
Antworten:
readlink -f foo.bar
oder (erst installieren)
realpath foo.bar
ls | xargs realpath
.
readlink
ist, dass es funktioniert, auch wenn die Datei nicht existiert. Dies kann Fehler auf sehr seltsame Weise verewigen.
Ziehen Sie die Datei einfach in das Terminal und legen Sie sie dort ab.
'/home/alexcohn/.gvfs/…'
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.
smb://
-style, daher kann es nicht im Terminal wiederverwendet werden.
smb://
-Style-Pfad.
Wenn es sich um eine ausführbare Datei handelt, führen Sie (in einem Terminal) Folgendes aus:
$ which your_executable
Zum Beispiel: $ which ls
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 find
in 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 locate
Sie den Dateinamen ermitteln. (Führen Sie sudo updatedb
das 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.
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
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.