您如何快速获取要在终端中使用的文件的完整路径?


Answers:


44
readlink -f foo.bar

或(先安装)

realpath foo.bar

这个答案比被接受的答案更准确。
Kunok

对于完整的文件夹:ls | xargs realpath
巴勃罗A

1
缺点readlink是即使文件不存在也可以使用。这会以非常奇怪的方式使错误永久存在。
GregRos


11

所有好的答案;这是另一种情况的提示。

如果要使用nautilus浏览文件,并且需要当前目录的完整路径,请按CTRL+L。这会将面包屑按钮临时更改回旧样式的地址栏,从而使您可以复制路径。


…但这仍然是smb://样式,因此无法在终端中重用。
亚历克斯·科恩

有趣; 在系统上(Ubuntu 13.10),我没有获得smb://-style路径。
Sicco 2014年

正是我在寻找的东西,我的意思是说,终端机是ls的好地方,但是有时候您使用的是文件夹视图:')
edencorbin

3

如果它是可执行文件,则执行(在终端中):

$ which your_executable

例如: $ which ls


这是我一直在寻找的答案
Sharjeel Ahmed

1

除了拖动图标外,还有几种方法可以在没有鹦鹉螺的情况下获得完整路径(或thunar,konqueror等)。然后,您将单击三次或单击并拖动并复制,有可能将其保存在剪贴板管理器*中,然后将其粘贴到需要的位置。
(帕蒂(pattie),klipper,glippy,glipper,回忆

  • 您可以find在文件上方的目录中使用。(如果您不知道它在哪里,请[通常]在您的主目录顶部开始,将您的shell放到您的位置。)
    find . | egrep filename

  • 您可以locate用来获取文件名。(sudo updatedb如果最近尚未执行,请运行。)

使用find的一个更实际的示例如下:

$ find | egrep askubuntu | grep txt
./askubuntu-temp.txt
./drDocuments/web/meta.askubuntu.txt
./other/stuff/askubuntu.txt.iteration.1
./other/stuff/askubuntu.txt.iteration.2
[...]

要切出您不喜欢的内容,例如:

find | egrep askubuntu | grep txt | egrep -v iteration
find | egrep askubuntu | grep txt | egrep -v 'iteration|meta|other'

尽管grep经常更需要,但locate的使用方式大致相同:

locate myfile | egrep home | egrep -v 'mozilla|cache|local|bin|\.pyc|test' | grep \.py

这不是键入此内容的最有效方法,但是通常如果我丢失了文件,我会反复进行此操作,并在添加时添加grep子句。



0

如果仅在Nautilus中复制文件,则将复制完整路径。
然后将其粘贴到终端中。只需粘贴即可:

file:///home/juan/2017/agenda20170101.html

如果右键单击并选择“粘贴文件名”,则会得到:

'/home/juan/2017/agenda20170101.html'

带有引号,如图所示。
这与Windows不同,Windows复制文件内容而不是文件名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.