Как получить полный путь к файлу? - PullRequest
634 голосов
/ 10 марта 2011

Есть ли простой способ, которым я могу напечатать полный путь file.txt?

file.txt = /nfs/an/disks/jj/home/dir/file.txt

<command>

dir> <command> file.txt  

должен напечатать

/nfs/an/disks/jj/home/dir/file.txt

Ответы [ 32 ]

0 голосов
/ 22 марта 2017

В Mac OS, если вы просто хотите получить путь к файлу в поисковике, нажмите на файл, удерживая клавишу Control, и прокрутите вниз до «Services» внизу.Вы получаете множество вариантов, включая «копировать путь» и «копировать полный путь».Нажатие на один из них помещает путь в буфер обмена.

0 голосов
/ 25 июля 2013

Это даст вам абсолютный путь к файлу:

find / -name file.txt 
0 голосов
/ 11 декабря 2013
find / -samefile file.txt -print

Найдет все ссылки на файл с таким же номером индекса , что и file.txt

добавление флага -xdev позволит избежать find пересечения границ устройства («точек монтирования»). (Но это, вероятно, приведет к тому, что ничего не будет найдено, если find не запускается в каталоге на том же устройстве, что и file.txt)

Обратите внимание, что find может сообщать о нескольких путях для одного объекта файловой системы, потому что Inode может быть связан более чем одной записью каталога, возможно, даже используя разные имена. Например:

find /bin -samefile /bin/gunzip -ls

Будет выводить:

12845178    4 -rwxr-xr-x   2 root     root         2251 feb  9  2012 /bin/uncompress
12845178    4 -rwxr-xr-x   2 root     root         2251 feb  9  2012 /bin/gunzip
0 голосов
/ 10 ноября 2016

Еще одна утилита Linux, которая выполняет эту работу:

fname <file>
0 голосов
/ 09 ноября 2016

Работает как с Linux, так и с Mac OSX ..

 echo $(pwd)$/$(ls file.txt)
0 голосов
/ 23 марта 2016

В Mac OSX выполните следующие действия:

  1. cd в каталог целевого файла.
  2. Введите одну из следующих команд терминала.
Терминал
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. Замените file.txt на ваше фактическое имя файла.
  2. Нажмите Введите
0 голосов
/ 29 февраля 2016

Создайте функцию, подобную приведенной ниже (выводит абсолютный путь к файлу с помощью pwd и добавляет файл в конце пути:

abspath() { echo $(pwd "$1")/"$1"; }

Теперь вы можете просто найти любой путь к файлу:

abspath myfile.ext
0 голосов
/ 19 февраля 2016

Мне нравятся многие ответы, которые уже даны, но я нашел это действительно полезным, особенно в скрипте, чтобы получить полный путь к файлу, включая следующие символические ссылки и относительные ссылки, такие как . и ..* 1003.*

dirname `readlink -e relative/path/to/file`

Что вернет полный путь file от корневого пути и далее.Это можно использовать в скрипте, чтобы скрипт знал, по какому пути он работает, что полезно в клоне репозитория, который может быть расположен в любом месте на машине.

basePath=`dirname \`readlink -e $0\``

Затем я могу использовать ${basePath} переменная в моих сценариях для прямой ссылки на другие сценарии.

Надеюсь, это поможет,

Дейв

0 голосов
/ 26 февраля 2015
fp () {
PHYS_DIR=`pwd -P`
RESULT=$PHYS_DIR/$1
echo $RESULT | pbcopy
echo $RESULT
}

Копирует текст в буфер обмена и отображает текст в окне терминала.

:)

(я скопировал часть кода из другого ответа переполнения стека, но больше не могу найти этот ответ)

0 голосов
/ 25 июня 2015

самый простой способ, который я нашел, это

for i in `ls`; do echo "`pwd`/$i"; done

у меня хорошо работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...