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

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

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

-L选项将完成你想要的。 它取消了符号链接。

所以你的命令是:

 ls -LR 

你也可以做到这一点

 find -follow 

-follow选项指示find查找符号链接到目录。

在Mac OS X上使用

 find -L 

as -follow已被弃用。

树怎么样? tree -l将遵循符号链接。

免责声明 :我写了这个包。

 find /dir -type f -follow -print 

-type f表示它将显示真实文件(不是符号链接)

跟随意味着它将跟随你的目录符号链接

-print会导致它显示文件名。

如果你想要一个lstypes的显示器,你可以做下面的事情

 find /dir -type f -follow -print|xargs ls -l 

使用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 . 

从查找manpage:

 -L Follow symbolic links. 

如果你发现你只想遵循一些符号链接(比如你可能只是提到的顶级链接),你应该看看-H选项,它只跟随你在命令行上传递给它的符号链接。

 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有效,并且在search过程中查find子目录的符号链接,则会search符号链接指向的子目录。

我知道tree是合适的,但我没有安装树。 所以,我在这里得到了一个非常接近的替代

 find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/' 
 ls -R -L 

-L解除引用符号链接。 这也将使得不可能看到任何符号链接到文件,但他们会看起来像指向文件。