我怎样才能在Linux中列出绝对path的文件?
我想用完整path生成recursion文件列表
/home/ken/foo/bar
但据我可以看到两个ls
,只find
相对path列表
./foo/bar (from the folder ken)
这似乎是一个显而易见的要求,但我无法在find
或ls
手册页中看到任何内容。
如果你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/**/*
您可以使用
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
会做到这一点