Как получить полный путь к файлу? - 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 ]

1024 голосов
/ 10 марта 2011

Использование readlink :

readlink -f file.txt
167 голосов
/ 04 ноября 2014

Полагаю, вы используете Linux.

Я нашел утилиту под названием realpath в coreutils 8.15.

realpath file.txt
/data/ail_data/transformed_binaries/coreutils/test_folder_realpath/file.txt

Согласно комментариям @ styrofoam-fly и @ arch-standton, realpath сам по себе не проверяет существование файла, для решения этой проблемы добавьте аргумент e: realpath -e file

73 голосов
/ 11 марта 2011

Следующее обычно делает трюк:

 echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")
28 голосов
/ 10 марта 2011

Я знаю, есть более простой способ, но, черт возьми, если я смогу его найти ...

jcomeau@intrepid:~$ python -c 'import os; print(os.path.abspath("cat.wav"))'
/home/jcomeau/cat.wav
<ч />
jcomeau@intrepid:~$ ls $PWD/cat.wav
/home/jcomeau/cat.wav
20 голосов
/ 01 июля 2013
find $PWD -type f | grep "filename"

или

find $PWD -type f -name "*filename*"
11 голосов
/ 14 марта 2015

Если вы находитесь в том же каталоге, что и файл:

ls "`pwd`/file.txt"

Замените file.txt на целевое имя файла.

10 голосов
/ 15 августа 2017

В Windows вы можете: -

  • Удерживать клавишу Shift и щелкнуть правой кнопкой мыши на файле, который дает вам опцию под названием "Copy as Path"

    Это скопирует полный путь к файлув буфер обмена.

В Linux вы можете использовать команду: -

  • realpath yourfile, чтобы получить полный путь к файлу, как предлагают многие.
5 голосов
/ 21 декабря 2016

Я знаю, что это старый вопрос сейчас, но просто для добавления к информации здесь:

Команда Linux which может использоваться для поиска пути к файлу командного файла, то есть

$ which ls
/bin/ls

Есть некоторые оговорки к этому;пожалуйста, смотрите https://www.cyberciti.biz/faq/how-do-i-find-the-path-to-a-command-file/.

3 голосов
/ 11 декабря 2013

Вы можете использовать скрипт fpn (полный путь) :

% pwd
/Users/adamatan/bins/scripts/fpn

% ls
LICENSE   README.md fpn.py

% fpn *
/Users/adamatan/bins/scripts/fpn/LICENSE
/Users/adamatan/bins/scripts/fpn/README.md
/Users/adamatan/bins/scripts/fpn/fpn.py

fpn не является стандартным пакетом Linux, но это бесплатный и открытый githubпроект и вы можете настроить его за минуту .

3 голосов
/ 19 июля 2017

Работает на Mac, Linux, * nix:

Это даст вам CSV всех файлов в текущем каталоге:

ls | xargs -I {} echo "$(pwd -P)/{}" | xargs | sed 's/ /","/g'

Вывод этого может быть легко скопирован в список Python или любую аналогичную структуру данных.

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