2008-09-19 117 views
102

假设我有一个目录/dir其内部有3个符号连接其他目录 /dir/dir11/dir/dir12/dir/dir13。我想列出dir中的所有文件,包括dir11,dir12dir13中的文件。LINUX递归列出目录中的所有文件,包括在符号链接目录中的文件

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

+0

的可能的复制[如何只使用Linux获取文件名\`找到\`?](http://stackoverflow.com/questions/5456120/how-to -only-get-file-name-with-linux-find) – 2016-11-25 11:15:04

回答

157

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

所以,你的命令是:

ls -LR 

您还可以

find -follow 

-follow选项指示找到跟随符号链接目录的做到这一点。

在Mac OS X上使用

find -L 

-follow已被弃用。

+10

-follow在新版本的find中不推荐使用-L。 – pjz 2008-09-19 20:41:19

+0

@pjz:是否有'以下不赞成的交叉引用;使用-L'?有些令我惊讶的是,我确实在http://www.opengroup.org/onlinepubs/009695399/toc.htm找到了'-L'和'-H'的POSIX/SUS标准,更让我惊讶的是没有' - 关注',所以我回答了我自己的问题。 – 2008-10-12 23:23:14

+0

这不适合我。首先什么也没有发生,然后我试着用'-follow' - 它说它找不到文件夹'ollow' – 2015-04-21 08:04:55

7

使用ls命令:

ls -LR 

从 '人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选项,其中只有遵循您传递给它的命令行符号链接。

35
find /dir -type f -follow -print 

-type f意味着它会显示实时文件(不是符号连接)

-follow意味着它会跟着你的目录符号链接

-print将导致它来显示文件名。

如果你想有一个LS型显示器,你可以做以下

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

-L解引用符号链接。这也将使得看不到文件的任何符号链接 - 它们看起来像指向文件。

97

如何treetree -l将遵循符号链接。

免责声明:我写了这个包。的 文件到

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在其搜索过程中发现了到子目录的符号链接,则将搜索 符号链接所指向的子目录 。

2

我知道tree是合适的,但我没有安装树。所以,我有一个非常密切的替代here

find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/' 
相关问题