Come è possibile ottenere rapidamente il percorso completo di un file da utilizzare nel terminale?


Risposte:


44
readlink -f foo.bar

o (installarlo prima)

realpath foo.bar

Questa risposta è più accurata di una accettata.
Kunok,

Per la cartella completa: ls | xargs realpath.
Pablo A

1
L'aspetto negativo di readlinkè che funzionerà anche se il file non esiste. Questo può perpetuare i bug in modi molto strani.
GregRos,

32

Basta trascinare e rilasciare il file nel terminale.


1
Lo sto mettendo qui in modo da non dimenticare, speriamo che aiuti alcuni di voi: D
Olivier Lalonde,

Restituisce un percorso con prefisso "smb: //" per le condivisioni montate SMB anziché il percorso effettivamente montato.
Kupiakos,

@Kupiakos: per me, gnome-terminal traduce felicemente il percorso del file rilasciato in'/home/alexcohn/.gvfs/…'
Alex Cohn

11

Tutte buone risposte; Ecco un suggerimento per un'altra situazione.

Se stai sfogliando i tuoi file utilizzando nautilus e desideri il percorso completo della directory corrente, premi CTRL+L. In questo modo i pulsanti breadcrumb tornano temporaneamente alla barra degli indirizzi vecchio stile, consentendo di copiare il percorso.


... ma questo è ancora smb://stile, quindi non può essere riutilizzato nel terminale.
Alex Cohn,

Interessante; sul mio sistema (Ubuntu 13.10) non ottengo un smb://percorso in stile.
Sicco,

Esattamente quello che stavo cercando, intendo dire che il terminale è un ottimo posto per noi, ma ci sono quelle volte in cui lavori nelle visualizzazioni di una cartella di file: ')
edencorbin

3

Se è un eseguibile, quindi eseguire (in un terminale):

$ which your_executable

Per esempio: $ which ls


Questa è la risposta che stavo cercando
Sharjeel Ahmed,

1

Oltre a trascinare l'icona, ci sono alcuni modi per ottenere il percorso completo senza nautilus (o thunar, konqueror, et al.). Dovresti quindi fare triplo clic o fare clic e trascinare e copiare, salvandolo potenzialmente nel gestore degli Appunti * e incollandolo dove necessario.
(pastie, klipper, glippy, glipper, anamnesi)

  • Puoi usarlo findin una directory sopra il tuo file. (Se non sai dove si trova, inizia da dove la shell ti fa cadere, [generalmente] nella parte superiore della tua home directory.)
    find . | egrep filename

  • È possibile utilizzare locateper ottenere il nome file. (Esegui sudo updatedbse non è stato fatto di recente.)

Un esempio più realistico dell'uso di find sarebbe qualcosa del tipo:

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

Per ritagliare quelli che non ti piacciono, ad esempio:

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

individuare è usato più o meno allo stesso modo, sebbene grep sia spesso più necessario:

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

Questo non è il modo più efficiente per digitare questo, ma di solito se ho perso un file, lo faccio iterativamente, aggiungendo clausole grep mentre procedo.


1

Facilmente eseguito in Python usando la os.realpath()funzione:

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

Da una risposta correlata , puoi anche usarereadlink

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

0

Se si copia semplicemente un file in Nautilus, viene copiato il percorso completo.
Quindi incollalo nel terminale. Semplicemente incollando ottieni:

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

Se fai clic con il pulsante destro del mouse e scegli "Incolla nomi di file", otterrai:

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

con le virgolette come mostrato.
Ciò differisce da Windows, che copia il contenuto del file anziché il suo nome.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.