Как вы можете быстро получить полный путь к файлу для использования в терминале?


Ответы:


44
readlink -f foo.bar

или (установите его первым)

realpath foo.bar

Этот ответ более точен, чем принятый.
Кунок

Для полной папки: ls | xargs realpath.
Пабло А

1
Недостатком readlinkявляется то, что он будет работать, даже если файл не существует. Это может увековечить ошибки очень странными способами.
GregRos

32

Просто перетащите файл в терминал.


1
Я помещаю это сюда, чтобы не забыть, будем надеяться, что это поможет некоторым из вас: D
Оливье Лалонд

Возвращает путь с префиксом «smb: //» для смонтированных общих ресурсов SMB вместо фактического смонтированного пути.
Купиакос

@Kupiakos: для меня gnome-терминал с радостью переводит путь к удаленному файлу'/home/alexcohn/.gvfs/…'
Алекс Кон

11

Все хорошие ответы; Вот подсказка для другой ситуации.

Если вы просматриваете свои файлы с помощью nautilus и хотите получить полный путь к текущему каталогу, нажмите CTRL+L. При этом кнопки хлебных крошек временно возвращаются в адресную строку старого стиля, что позволяет копировать путь.


... но это все еще smb://стиль, поэтому его нельзя использовать в терминале.
Алекс Кон

Интересно; в моей системе (Ubuntu 13.10) я не получаю smb://путь в стиле.
Sicco

Именно то, что я искал, я имею в виду, что терминал - это отличное место для ls, но иногда вы работаете в папках с файлами: ')
edencorbin


1

В дополнение к перетаскиванию иконки, есть несколько способов получить полный путь без nautilus (или thunar, konqueror и др.). Затем вы должны были бы трижды щелкнуть или щелкнуть-перетащить и скопировать, потенциально сохранив это в вашем менеджере буфера обмена *, и вставить его в нужное место.
(пасти, клиппер, глипп, глипер, анамнез)

  • Вы можете использовать findв каталоге над вашим файлом. (Если вы не знаете, где он находится, начните с того места, куда вас уронит оболочка, [обычно] в верхней части вашего домашнего каталога.)
    find . | egrep filename

  • Вы можете использовать, locateчтобы получить имя файла. (Запустите, sudo updatedbесли это не было сделано недавно.)

Более реалистичным примером использования find было бы что-то вроде:

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

Вырезать те, которые вам не нравятся, например:

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

locate используется почти так же, хотя grep часто более необходим:

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

Это не самый эффективный способ напечатать это, но обычно, если я потерял файл, я делаю это итеративно, добавляя предложения grep.



0

Если вы просто скопируете файл в Nautilus, то будет скопирован полный путь.
Затем вставьте его в терминал. Просто вставив, вы получите:

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

Если вы щелкните правой кнопкой мыши и выберите «Вставить имена файлов», то вы получите:

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

с кавычками, как показано.
Это отличается от Windows, которая копирует содержимое файла вместо его имени.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.