LINUX递归列出目录中的所有文件,包括符号链接目录中的文件

时间:2008-09-19 20:20:32

标签: linux

假设我有一个目录/dir,其中有3个符号链接到其他目录 /dir/dir11/dir/dir12/dir/dir13。我想列出dir中的所有文件,包括dir11dir12dir13中的文件。

为了更通用,我想列出所有文件,包括符号链接目录中的文件。 find .ls -R等在符号链接处停止,而不导航到列表中以进一步列出。

8 个答案:

答案 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 {} +