2014-02-15 00:30:37 +0000 2014-02-15 00:30:37 +0000
43
43

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

‘ls’可以显示文件名,如

ls config.inc.php
config.inc.php

‘pwd’显示当前文件夹的完整路径,如

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

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

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php

答案 (8)

31
31
31
2015-09-18 19:36:53 +0000

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

macports 和 homebrew 提供了一个包含 greadlink (GNU readlink) 的 coreutils 包。

20
20
20
2014-02-15 00:55:03 +0000

有很多方法;这里有一个例子可能对你有用:

claw:~ jonv$ echo `pwd`/`ls config.in.php`
/Users/jonv/config.in.php

如果你想知道更多的例子,可以在this上的stackoverflow的帖子里找到一堆。

9
9
9
2016-03-24 06:12:55 +0000

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

1.cd进入目标文件的目录。输入以下任何一个终端命令。 终端 ls "`pwd`/file.txt" echo $(pwd)/file.txt

  1. 用实际的文件名代替file.txt。按回车键。
3
3
3
2019-10-17 22:23:18 +0000

使用 realpath

E.g.:

$ realpath README.md 
/Users/joe/my/long/directory/structure/README.md

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

FYI, 我的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
3
3
3
2019-01-25 01:03:16 +0000

我不喜欢所有的解决方案,所以我根据https://stackoverflow.com/a/22684652/953327

创建别名,简单来说就是一个函数调用,把pwdls $1结合起来。

alias lsf='function _lsf(){ echo "$(pwd)/$(ls $1)"; };_lsf'

使用示例: lsf registry.lock -> /tmp/registry.lock

我选择了.bash_profile作为 “list full "或 "list file "的别名,对我来说是有意义的,但可以随意修改。


更新 (感谢 @santiago-arizti)* 为了能够使用相对路径(例如lsf)

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
2
2
2
2019-07-26 22:18:13 +0000

我想要比你需要的更多,我需要能够询问相对目录下的文件,比如../../readme.md,结果应该是像/Users/santi/readme.md

这样的结果,所以我在$PATH的一个文件夹里创建了一个(可执行)脚本,这个文件夹是lsf的一部分,叫dirname,内容如下。

#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md 
/Users/santi/p/readme.md

所以你可以这样使用它:

santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory

没有参数会给你警告 santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md /Users/santi/p/fakefile.md

假目录会给你警告(因为&007) &001

假文件但真实目录没有警告(如果你需要的话可以添加验证)

&001

2
2
2
2018-01-22 10:07:23 +0000

你也可以使用 “find "命令来列出所有文件的完整路径:

find DirectoryName -type f

,或者只列出以下文件:

find . -type f
1
1
1
2019-02-07 00:12:06 +0000

下面将在工作目录中找到一个匹配file.txt的文件,并返回其绝对路径

find `pwd` -name file.txt
```。