85

How can I copy the file and folders full path in Nautilus? In the right-click context menu there is no such option provided. In file/folder property window I can only copy the folder path.

Braiam
  • 69,112

10 Answers10

106

To quickly get a file path in Nautilus we can use the right click context entry "Copy" to copy the file path to the clipboard.

Then just "Paste" (resp. "Paste Filenames") this path from the clipboard to the other application, e.g. a text editor.

Takkat
  • 144,580
53

You can use to copy folder path from Nautilus with the command

Ctrl + l

IgorBeaz
  • 676
19

Unfortunately pasting file path from Nautilus to GNOME Terminal does not work as expected. It pastes the path as an URL with URL encoded characters. For example it pastes:

 file:///etc/gconf/gconf.xml.defaults/%25gconf-tree.xml

instead of

 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

Solution with clipboard

Use the Edit > Paste Filenames function from the terminal menu which also takes care of escaping for a shell. Unfortunately this function does not have a keyboard shortcut (besides Alt+E+F) and it seems that it is not possible to set one using gconf-editor.

See also Nautilus copy file/directory path should not put "file://" prefix.

Solution with drag & drop

Dragging a file or directory from Nautilus to GNOME Terminal transfers the correctly formatted path like Edit > Paste Filenames mentioned above.

4

I found a solution to this. You can use Nautilus actions utility to add "Copy path" and "Copy directory path" the the context menu.

This seems to work well.

Source. Don't forget to make the .py-file executable.

MrTomRod
  • 141
Aaron
  • 49
2

Since Takkat's solution seems to be broken with Nautilus version >= 3.30 (bug report), I would like to offer a workaround that creates a context menu option.

  1. Install Filemanager-Actions, and xclip:

sudo apt-get install filemanager-actions nautilus-actions xclip

  1. Run FileManager-Actions, and create a new action like so:
  • Hit button "Define a new action"
  • Name the action in the "Items list", e.g. "Copy path to clipboard"
  • Under the "Action" tab, check the two options "Display item in selection context menu", and "Display item in location context menu"
  • Under the "Command" tab, set path to "bash", and "Parameters" to

-c "realpath -z %B | xclip -selection clipboard"

  • Hit the button "save the items tree"
  • restart nautilus: "nautilus -q"
  1. Now you should be able to right click a file/folder, and see the action we just defined to copy the path
1

Simply sudo apt-get install pcmanfm, open it, choose 'keep in Unity starts' and finally remove Nautilus.

The logo is the same, you won't notice the difference - except that you can now copy the path..

0

Create the file and make executable

sudo touch /usr/share/nautilus-python/extensions/nautilus-copy-paths.py
sudo chmod +x /usr/share/nautilus-python/extensions/nautilus-copy-paths.py
sudo gedit /usr/share/nautilus-python/extensions/nautilus-copy-paths.py
nautilus -q

then when editing past i the below content and restart nautilus afterwards

import os
from gi import require_version
require_version('Gtk', '3.0')
require_version('Nautilus', '3.0')

from gi.repository import Gdk, Gtk, Nautilus, GObject from gettext import gettext, bindtextdomain, textdomain

NAUTILUS_PATH="/usr/bin/nautilus"

class NautilusAdmin(Nautilus.MenuProvider, GObject.GObject): """Simple Nautilus extension that adds some file path actions to the right-click menu, using GNOME's new admin backend.""" def init(self): pass

def get_file_items(self, window, files):
    """Returns the menu items to display when one or more files/folders are
    selected."""
    # Don't show when more than 1 file is selected
    if len(files) != 1:
        return
    file = files[0]

    # Add the menu items
    items = []
    self._setup_gettext();
    self.window = window
    if file.get_uri_scheme() == "file": # must be a local file/directory
        if file.is_directory():
            if os.path.exists(NAUTILUS_PATH):
                items += [self._create_nautilus_item(file)]

    return items

def get_background_items(self, window, file):
    """Returns the menu items to display when no file/folder is selected
    (i.e. when right-clicking the background)."""

    # Add the menu items
    items = []
    self._setup_gettext();
    self.window = window
    if file.is_directory() and file.get_uri_scheme() == "file":
        if os.path.exists(NAUTILUS_PATH):
            items += [self._create_nautilus_item(file)]

    return items


def _setup_gettext(self):
    """Initializes gettext to localize strings."""
    try: # prevent a possible exception
        locale.setlocale(locale.LC_ALL, "")
    except:
        pass
    bindtextdomain("nautilus-admin", "/usr/share/locale")
    textdomain("nautilus-admin")

def _create_nautilus_item(self, file):
    item = Nautilus.MenuItem(name="NautilusAdmin::Nautilus",
                             label=gettext("Copy path"),
                             tip=gettext("Copy File path to clipboard"))
    item.connect("activate", self._nautilus_run, file)
    return item



def _nautilus_run(self, menu, file):
    """'Copy File path' menu item callback."""
    uri = file.get_uri()
    file_path = uri.replace("file://", "")
    clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
    clipboard.set_text(file_path, -1)
    clipboard.store()

I just modified the source from this extensions which does work to do what I wanted. https://fostips.com/open-as-administrator-ubuntu-21-04-fix/

Example: enter image description here

hope this is helpful

Mike R
  • 121
0

The functionality to copy a file path has changed (i.e., for practical purposes, broken) since 20.04 to accommodate requirements to work with the Desktop Icons Gnome Shell extension. The good news is that the old behaviour, where a copy will place plain file path in the clipboard, is restored in Files 40.0. Files 40 which will make it into Ubuntu 21.10, rendering the accepted answer of this question valid again.

vanadium
  • 97,564
0

Rather than nautilius, you can use the following command if you have copyq clipboard.

copyq add "`pwd`"

This will copy the current path to the clipboard, then basically you can paste and use it anywhere you want.

malachi
  • 61
0

Nautilus does not provide this possibility.
But it should be possible to achieve this if you write a plugin for Nautilus.