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

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

<命令>

dir> <command> file.txt  

应该打印

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

当前回答

创建一个如下所示的函数(使用pwd回显文件的绝对路径,并将文件添加到路径的末尾:

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

现在你可以找到任何文件路径:

abspath myfile.ext

其他回答

在Windows上:

按住Shift键,在Windows资源管理器中右键单击一个文件,会出现一个名为“复制为路径”的选项。 这将复制文件的完整路径到剪贴板。

在Linux上:

您可以使用realpath yourfile命令来获得其他人建议的文件的完整路径。

下面的方法通常可以达到目的:

 echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")"

你可以把它保存在壳里。Rc或者直接放到控制台

function absolute_path { echo "$PWD/$1"; }
alias ap="absolute_path"

例子:

ap somefile.txt

将输出

/home/user/somefile.txt

创建一个如下所示的函数(使用pwd回显文件的绝对路径,并将文件添加到路径的末尾:

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

现在你可以找到任何文件路径:

abspath myfile.ext
find / -samefile file.txt -print

会发现所有链接的文件与相同的索引节点号为file.txt

添加-xdev标志将避免find跨越设备边界(“挂载点”)。(但是,如果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