linux ~/ узнать - Как получить полный путь к файлу?




15 Answers

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

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

realpath realpath
/data/ail_data/transformed_binaries/coreutils/test_folder_realpath/realpath
ubuntu ls адрес

Есть ли простой способ распечатать полный путь 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



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

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



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

ls "`pwd`/file.txt"

Замените file.txt вашим целевым именем.




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

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

$ which ls
/bin/ls

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




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

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

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

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




Для Mac OS X я заменил утилиты, поставляемые с операционной системой, и заменил их более новой версией coreutils. Это позволяет вам получить доступ к таким инструментам, как readlink -f (для абсолютного пути к файлам) и realpath (абсолютный путь к каталогам) на вашем Mac.

Версия Homebrew добавляет «G» (для инструментов GNU) перед именем команды - поэтому эквиваленты становятся greadlink -f FILE и grealpath DIRECTORY .

Инструкции по установке инструментов coreutils / GNU в Mac OS X через Homebrew можно найти в этой статье StackExchange .

NB: команды readlink -f и realpath должны работать из коробки для пользователей, не являющихся пользователями Mac Unix.




Вы можете сохранить это в своем «shell.rc» или просто положить в консоль

function absolute_path {echo "$ PWD / $ 1"; }

alias ap = "absolute_path"

пример:

ap somefile.txt

выйдет

/home/user/somefile.txt




Вы можете использовать эту функцию. Если имя файла задано без относительного пути, то предполагается, что оно присутствует в текущем рабочем каталоге:

abspath() { old=`pwd`;new=$(dirname "$1");if [ "$new" != "." ]; then cd $new; fi;file=`pwd`/$(basename "$1");cd $old;echo $file; }

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

$ abspath file.txt
/I/am/in/present/dir/file.txt

Использование с относительным путем:

$ abspath ../../some/dir/some-file.txt
/I/am/in/some/dir/some-file.txt

С пробелами в имени файла:

$ abspath "../../some/dir/another file.txt"
/I/am/in/some/dir/another file.txt



find / -samefile file.txt -print

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

добавление флага -xdev позволит избежать пересечения границ устройств («точки монтирования»). (Но это, вероятно, ничего не может найти, если 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



Обычно:

find `pwd` | grep <filename>

Альтернативно, только для текущей папки:

find `pwd` -maxdepth 1 | grep <filename>



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

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



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

fname <file>



fp () {
PHYS_DIR=`pwd -P`
RESULT=$PHYS_DIR/$1
echo $RESULT | pbcopy
echo $RESULT
}

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

:)

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




Чтобы получить полный путь к файлу:

1) откройте свой терминал в папке, содержащей ваш файл , нажав на клавиатуру следующие клавиши:

CTRL + ALT + T

2), затем введите «pwd» (сокращенное название P rint для W orking D- справочника):

your@device ~ $ pwd

это все люди!




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

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

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

abspath myfile.ext





Related