是否有一种简单的方法可以打印file.txt的完整路径?

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

<命令>

dir> <command> file.txt  

应该打印

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

当前回答

我很惊讶居然没人提到定位。

如果已经安装了定位包,甚至不需要在感兴趣的文件所在的目录中。

假设我正在寻找一个setenv.sh脚本的完整路径名。这就是找到它的方法。

$ locate setenv.sh
/home/davis/progs/devpost_aws_disaster_response/python/setenv.sh
/home/davis/progs/devpost_aws_disaster_response/webapp/setenv.sh
/home/davis/progs/eb_testy/setenv.sh

注意,在这种情况下它会找到三个脚本,但是如果我只需要一个I 会这样做:

$ locate *testy*setenv.sh
/home/davis/progs/eb_testy/setenv.sh

其他回答

如果你和文件在同一个目录:

ls "`pwd`/file.txt"

用目标文件名替换file.txt。

我喜欢已经给出的许多答案,但我发现这真的很有用,特别是在脚本中获得文件的完整路径,包括遵循符号链接和相对引用,例如。和. .

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

它将返回从根路径开始的文件的完整路径。 这可以在脚本中使用,以便脚本知道它是从哪个路径运行的,这对于可能位于机器上任何位置的存储库克隆非常有用。

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

然后我可以在我的脚本中使用${basePath}变量来直接引用其他脚本。

希望这能有所帮助,

Dave

you@you:~/test$ ls
file
you@you:~/test$ path="`pwd`/`ls`"
you@you:~/test$ echo $path
/home/you/test/file

另一个Linux实用程序,它做这个工作:

fname <file>

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

CD到目标文件的目录。 输入下列任意一个终端命令。

Terminal
ls "`pwd`/file.txt"
echo $(pwd)/file.txt

用实际的文件名替换file.txt。 按回车键