假设我有一个目录/dir
,其中有3个符号链接到其他目录
/dir/dir11
,/dir/dir12
和/dir/dir13
。我想列出dir
中的所有文件,包括dir11
,dir12
和dir13
中的文件。
为了更通用,我想列出所有文件,包括符号链接目录中的文件。 find .
,ls -R
等在符号链接处停止,而不导航到列表中以进一步列出。
答案 0 :(得分:195)
-L
的{{1}}选项可以达到您想要的效果。它取消引用了符号链接。
所以你的命令是:
ls
您也可以使用
完成此操作ls -LR
find -follow
选项指示find遵循指向目录的符号链接。
在Mac OS X上使用
-follow
已弃用find -L
。
答案 1 :(得分:110)
tree怎么样? tree -l
将遵循符号链接。
免责声明:我写了这个包。
答案 2 :(得分:43)
find /dir -type f -follow -print
-type f
表示它将显示真实文件(不是符号链接)
-follow
表示它将遵循您的目录符号链接
-print
会使其显示文件名。
如果您想要ls类型显示,可以执行以下操作
find /dir -type f -follow -print|xargs ls -l
答案 3 :(得分:8)
使用ls:
ls -LR
来自'man ls':
-L, --dereference
when showing file information for a symbolic link, show informa‐
tion for the file the link references rather than for the link
itself
或者,使用find:
find -L .
从查找联系人页面:
-L Follow symbolic links.
如果您发现只想跟随少数符号链接(可能只是您提到的那些符号链接),那么您应该查看-H选项,它只会跟随您传递给的符号链接它在命令行上。
答案 4 :(得分:5)
find -L /var/www/ -type l
# man find
-L Follow symbolic links. When find examines or prints information about files, the information used shall be taken from the
的属性 链接指向的文件,而不是链接本身(除非它是一个破损的符号链接或查找无法 检查文件 链接点)。使用此选项意味着-noleaf。如果稍后使用-P选项,-noleaf仍然有效。如果-L是 实际上,find在搜索期间发现了一个指向子目录的符号链接,该子目录指向该子目录 象征性的联系将 被搜查。
答案 5 :(得分:3)
我知道tree
是合适的,但我没有安装树。所以,我有一个非常接近的候补here
find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
答案 6 :(得分:2)
ls -R -L
-L
取消引用符号链接。这也使得无法看到文件的任何符号链接 - 它们看起来像指向文件。
答案 7 :(得分:0)
如果您要打印所有文件内容:
find . -type f -exec cat {} +