是否有一种简单的方法可以打印file.txt的完整路径?
file.txt = /nfs/an/disks/jj/home/dir/file.txt
<命令>
dir> <command> file.txt
应该打印
/nfs/an/disks/jj/home/dir/file.txt
是否有一种简单的方法可以打印file.txt的完整路径?
file.txt = /nfs/an/disks/jj/home/dir/file.txt
<命令>
dir> <command> file.txt
应该打印
/nfs/an/disks/jj/home/dir/file.txt
当前回答
下面的方法通常可以达到目的:
echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")"
其他回答
echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")
这是对@ZeRemz的答案的解释:
这个脚本获取相对路径作为参数"$1" 然后我们得到该路径的dirname部分(你可以将dir或file传递给这个脚本): 然后将“$(dirname“$1”)cd到这个相对目录中 && pwd -P并获取它的绝对路径。-P选项将避免所有符号链接 在此之后,我们将basename附加到绝对路径: 作为最后一步,我们重复它
这适用于Linux和Mac OSX:
echo $(pwd)$/$(ls file.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
我知道这是一个老问题了,但在这里补充一下信息:
Linux命令,可用于查找命令文件的文件路径。
$ which ls
/bin/ls
这里有一些注意事项;请参见https://www.cyberciti.biz/faq/how-do-i-find-the-path-to-a-command-file/。
find $PWD -type f | grep "filename"
or
find $PWD -type f -name "*filename*"