Jak szybko uzyskać pełną ścieżkę do pliku do użytku w terminalu?

47

Jak szybko uzyskać pełną ścieżkę do pliku do użytku w terminalu?

Olivier Lalonde
źródło

Odpowiedzi:

44
readlink -f foo.bar

lub (najpierw zainstaluj)

realpath foo.bar
spennig
źródło
Ta odpowiedź jest dokładniejsza niż jedna zaakceptowana.
Kunok
Dla całego folderu: ls | xargs realpath.
Pablo A
1
Minusem readlinkjest to, że będzie działać, nawet jeśli plik nie istnieje. Może to utrwalać błędy w bardzo dziwny sposób.
GregRos
32

Po prostu przeciągnij i upuść plik w terminalu.

Olivier Lalonde
źródło
1
Kładę to tutaj, aby nie zapomnieć, miejmy nadzieję, że to pomoże niektórym z was: D
Olivier Lalonde
Zwraca ścieżkę z prefiksem „smb: //” dla udziałów zamontowanych SMB zamiast rzeczywistej zamontowanej ścieżki.
Kupiakos,
@Kupiakos: dla mnie gnome-terminal szczęśliwie tłumaczy upuszczoną ścieżkę do pliku'/home/alexcohn/.gvfs/…'
Alex Cohn
11

Wszystkie dobre odpowiedzi; Oto wskazówka dotycząca innej sytuacji.

Jeśli przeglądasz pliki za pomocą nautilus i chcesz uzyskać pełną ścieżkę do bieżącego katalogu, naciśnij CTRL+L. Spowoduje to tymczasowe przywrócenie przycisków nawigacyjnych z powrotem do paska adresu w starym stylu, umożliwiając skopiowanie ścieżki.

Sicco
źródło
… Ale nadal jest to smb://styl, więc nie można go ponownie użyć w terminalu.
Alex Cohn
Ciekawy; w moim systemie (Ubuntu 13.10) nie otrzymuję smb://ścieżki w stylu.
Sicco,
Dokładnie to, czego szukałem, mam na myśli, że terminal jest doskonałym miejscem dla ls, ale są chwile, kiedy pracujesz w widokach folderów plików: ')
edencorbin
3

Jeśli jest to plik wykonywalny, to wykonaj (w terminalu):

$ which your_executable

Na przykład: $ which ls

perseo22
źródło
Oto odpowiedź, której szukałem
Sharjeel Ahmed
1

Oprócz przeciągania ikony istnieje kilka sposobów na uzyskanie pełnej ścieżki bez nautilusa (lub thunara, konquerora i in.). Następnie trzykrotnie kliknij lub przeciągnij i skopiuj, potencjalnie zapisując to w menedżerze schowka * i wklejając tam, gdzie potrzebujesz.
(pastie, klipper, glippy, glipper, anamnesis)

  • Możesz użyć findw katalogu nad plikiem. (Jeśli nie wiesz, gdzie to jest, zacznij od miejsca, w którym powala cię twoja powłoka, [ogólnie] w górnej części katalogu domowego.)
    find . | egrep filename

  • Możesz użyć, locateaby uzyskać nazwę pliku. (Uruchom, sudo updatedbjeśli nie zostało to ostatnio zrobione).

Bardziej realistycznym przykładem użycia find byłoby coś takiego:

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

Aby wyciąć te, których nie lubisz, np .:

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

locate jest używane w ten sam sposób, chociaż grep jest często bardziej potrzebny:

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

To nie jest najskuteczniejszy sposób na wpisanie tego, ale zwykle, jeśli zgubiłem plik, robię to iteracyjnie, dodając klauzule grep.

Belacqua
źródło
1

Łatwo wykonane w Pythonie za pomocą os.realpath()funkcji:

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

Z pokrewnej odpowiedzi możesz także skorzystaćreadlink

$ readlink -e ./out.txt                                                                                                  
/home/username/out.txt
Sergiy Kolodyazhnyy
źródło
0

Jeśli po prostu skopiujesz plik w Nautilusie, pełna ścieżka zostanie skopiowana.
Następnie wklej go w terminalu. Po wklejeniu otrzymujesz:

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

Jeśli klikniesz prawym przyciskiem myszy i wybierzesz „Wklej nazwy plików”, otrzymasz:

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

z cytatami, jak pokazano.
Różni się od systemu Windows, który kopiuje zawartość pliku zamiast jego nazwy.

Juan Lanus
źródło