如何在 Mac OSX 终端中显示包含完整文件名的文件的完整路径?

Rob*_*b L 62 command-line macos

'ls'可以显示文件名,例如

ls config.inc.php
config.inc.php 
Run Code Online (Sandbox Code Playgroud)

'pwd'显示当前文件夹的完整路径,例如

pwd
/Application/XAMPP/xamppfiles/phpmyadmin
Run Code Online (Sandbox Code Playgroud)

有没有一个命令可以把它们放在一起,就能显示:

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php
Run Code Online (Sandbox Code Playgroud)

小智 33

从这里:https : //stackoverflow.com/a/4031502/804713

macports 和 homebrew 提供了一个包含 greadlink (GNU readlink) 的 coreutils 包。感谢 Michael Kallweitt 在 mackb.com 上的帖子

brew 安装 coreutils

greadlink -f 文件.txt


小智 22

有很多方法可以做到这一点;这是一个可能适合您的示例:

claw:~ jonv$ echo `pwd`/`ls config.in.php`
/Users/jonv/config.in.php
Run Code Online (Sandbox Code Playgroud)

如果你想要更多的例子,stackoverflow上的这篇文章有很多。


Pur*_*ket 19

realpath

例如:

$ realpath README.md 
/Users/joe/my/long/directory/structure/README.md
Run Code Online (Sandbox Code Playgroud)

在stackoverflow上回答:https : //stackoverflow.com/a/3915075/441960

确保在 Homebrew 上下载 coreutils,因为它不是默认安装在所有 Mac 上:

brew install coreutils
Run Code Online (Sandbox Code Playgroud)

仅供参考,我的 MacOS (OSX) 版本:

$ uname -a
Darwin my-machine 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64
Run Code Online (Sandbox Code Playgroud)


Mow*_*zer 11

在 Mac OSX 中,执行以下步骤:

  1. cd 进入目标文件所在目录。
  2. 键入以下任一终端命令。
终端
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
Run Code Online (Sandbox Code Playgroud)
  1. 替换file.txt为您的实际文件名。
  2. Enter


FGr*_*reg 6

不喜欢任何给定的解决方案,所以我根据/sf/answers/1587925671/编写了自己的解决方案

pwd创建别名,它只是一个组合了和 的函数调用ls $1.bash_profile如果您愿意,您可以将其添加到您的中。

alias lsf='function _lsf(){ echo "$(pwd)/$(ls $1)"; };_lsf'
Run Code Online (Sandbox Code Playgroud)

使用示例:

lsf registry.lock
-> /tmp/registry.lock
Run Code Online (Sandbox Code Playgroud)

我选择lsf“完整列表”或“列表文件”,对我来说有意义,但可以随意修改。


更新(感谢@santiago-arizti)能够将其与相对路径一起使用(例如lsf ../../readme.md

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
Run Code Online (Sandbox Code Playgroud)


小智 5

您还可以使用“查找”命令列出具有完整路径的所有文件:

find DirectoryName -type f
Run Code Online (Sandbox Code Playgroud)

或者只是以下内容:

find . -type f
Run Code Online (Sandbox Code Playgroud)

  • 这不会返回绝对路径(这似乎是OP正在寻找的) (4认同)