我怎样才能在Linux中列出绝对path的文件?

我想用完整path生成recursion文件列表

/home/ken/foo/bar 

但据我可以看到两个ls ,只find相对path列表

 ./foo/bar (from the folder ken) 

这似乎是一个显而易见的要求,但我无法在findls手册页中看到任何内容。

如果你find一个绝对path,它将打印绝对path。 例如,要查找当前目录中的所有.htaccess文件:

 find `pwd` -name .htaccess 

find简单的prepends它的path给予该path的文件的相对path。

如果您想要parsing当前目录中的符号链接, Greg Hewgill还build议使用pwd -P

 readlink -f filename 

给出了完整的绝对path。 但如果文件是符号链接,你会得到最终parsing的名称。

使用这个dirs:

 ls -d -1 $PWD/** 

这对于文件:

 ls -d -1 $PWD/*.* 

这一切:

 ls -d -1 $PWD/**/* 

采取从这里http://www.zsh.org/mla/users/2002/msg00033.html

您可以使用

 find $PWD 

在bash中

 ls -d $PWD/* 

如果你给find命令一个绝对path,它会用绝对path吐出结果。 所以,如果你想input:

find/ home / ken / foo / -name bar -print
(而不是相对path查找。-name bar -print)

你应该得到:

/家庭/县/富/酒吧

因此,如果你想要一个ls -l并让它返回绝对path,那么你可以告诉find命令来执行一个ls -l。

find / home / ken / foo -name bar -exec ls -l {}; \

注意:{}和之间有空格。

你会得到这样的东西:

-rw-r – r – 1 ken admin 181 Jan 27 15:49 / home / ken / foo / bar

如果您不确定文件的位置,可以随时更改search位置。 只要searchpath以“/”开头,就会得到一个绝对path。 如果你正在search一个位置(比如/),你会得到许多拒绝错误的权限,那么我会build议redirect标准错误,这样你才能看到search结果:

find/ -name bar -exec ls -l {}; \ 2> / dev / null

(2>是承载和bash shell的语法,但是不能和c shell一起工作,也可能在其他shell中工作,但是我只知道它在bourne和bash中起作用)。

我希望这有帮助!

$PWD是Matthew上面的一个很好的select。 如果你想find只打印文件,那么你也可以添加-type f选项来只search普通文件。 其他选项是“d”仅适用于目录等。所以在你的情况下,它会是(如果我想只search文件与.c分机):

 find $PWD -type f -name "*.c" 

或者如果你想要所有的文件:

 find $PWD -type f 

注意:您不能为上述命令设置别名,因为当别名由bash设置时,$ PWD会自动完成到您的主目录。

 lspwd() { for i in $@; do ls -d -1 $PWD/$i; done } 
 ls -1 | awk -vpath=$PWD/ '{print path$1}' 

find / -print会做到这一点