How can you quickly get the complete path to a file for use in terminal?
Solution 1:
readlink -f foo.bar
or (install it first)
realpath foo.bar
Solution 2:
Just drag and drop the file in the terminal.
Solution 3:
All good answers; Here is a tip for another situation.
If you are browsing your files using nautilus and you want the complete path of your current directory, then press CTRL+L
. This changes the breadcrumb buttons temporarily back to the old-style address bar, allowing you to copy the path.
Solution 4:
If it's an executable, then execute (in a terminal):
$ which your_executable
For example: $ which ls
Solution 5:
In addition to dragging the icon, there are a few ways to get the full path without nautilus (or thunar, konqueror, et al.). You would then triple-click or click-drag and copy, potentially saving this in your clipboard manager*, and paste it where you need.
(pastie, klipper, glippy, glipper, anamnesis)
You can use
find
in a directory above your file. (If you don't know where it is, start where your shell drops you, [generally] in the top of your home directory.)find . | egrep filename
You can use
locate
to get the filename. (Runsudo updatedb
if that hasn't been done recently.)
A more realistic example of using find would be something like :
$ 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
[...]
To cut out the ones you don't like, e.g.:
find | egrep askubuntu | grep txt | egrep -v iteration
find | egrep askubuntu | grep txt | egrep -v 'iteration|meta|other'
locate is used much the same way, though grep is frequently more necessary:
locate myfile | egrep home | egrep -v 'mozilla|cache|local|bin|\.pyc|test' | grep \.py
This isn't the most efficient way to type this, but usually if I've lost a file, I do this iteratively, adding grep clauses as I go.