我正在编写一个将文件路径作为输入的shell脚本。
出于这个原因,我需要生成带有完整路径的递归文件清单。例如,文件bar
的路径为:
/home/ken/foo/bar
但是,据我所知,ls
和find
都只给出了相对路径列表:
./foo/bar (from the folder ken)
这似乎是一个显而易见的要求,但我在find
或ls
手册页中看不到任何东西。
如何在shell中生成包含绝对路径的文件列表?
发布于 2008-10-29 09:26:35
如果您一开始就给find
一个绝对路径,它将打印绝对路径。例如,要查找当前目录中的所有.htaccess文件:
find "$(pwd)" -name .htaccess
或者,如果您的shell将$PWD
展开到当前目录:
find "$PWD" -name .htaccess
find
只需将指定给它的路径添加到文件的相对路径之前。
如果你想解析当前目录中的符号链接,Greg Hewgill还建议使用pwd -P
。
发布于 2011-01-02 12:45:06
readlink -f filename
提供完整的绝对路径。但如果文件是符号链接,您将获得最终的解析名称。
发布于 2010-08-26 14:42:48
将此用于目录(在bash中需要**
后的/
,以将其限制为目录):
ls -d -1 "$PWD/"**/
这适用于直接位于当前目录下的文件和目录,其名称包含.
ls -d -1 "$PWD/"*.*
这是适用于一切的:
ls -d -1 "$PWD/"**/*
取自此处http://www.zsh.org/mla/users/2002/msg00033.html
在bash中,如果启用shopt -s globstar
,则**
是递归的。
https://stackoverflow.com/questions/246215
复制相似问题