假设我有一个目录/dir
其内部有3个符号连接其他目录 /dir/dir11
,/dir/dir12
和/dir/dir13
。我想列出dir
中的所有文件,包括dir11
,dir12
和dir13
中的文件。LINUX递归列出目录中的所有文件,包括在符号链接目录中的文件
更通用的,我想列出包括在其中的符号链接的目录中的那些所有文件。 find .
,ls -R
等停止在符号链接而不导航到他们进一步列出。
假设我有一个目录/dir
其内部有3个符号连接其他目录 /dir/dir11
,/dir/dir12
和/dir/dir13
。我想列出dir
中的所有文件,包括dir11
,dir12
和dir13
中的文件。LINUX递归列出目录中的所有文件,包括在符号链接目录中的文件
更通用的,我想列出包括在其中的符号链接的目录中的那些所有文件。 find .
,ls -R
等停止在符号链接而不导航到他们进一步列出。
的-L
选项ls
将完成你想要的。它取消了符号链接。
所以,你的命令是:
ls -LR
您还可以
find -follow
的-follow
选项指示找到跟随符号链接目录的做到这一点。
在Mac OS X上使用
find -L
为-follow
已被弃用。
-follow在新版本的find中不推荐使用-L。 – pjz 2008-09-19 20:41:19
@pjz:是否有'以下不赞成的交叉引用;使用-L'?有些令我惊讶的是,我确实在http://www.opengroup.org/onlinepubs/009695399/toc.htm找到了'-L'和'-H'的POSIX/SUS标准,更让我惊讶的是没有' - 关注',所以我回答了我自己的问题。 – 2008-10-12 23:23:14
这不适合我。首先什么也没有发生,然后我试着用'-follow' - 它说它找不到文件夹'ollow' – 2015-04-21 08:04:55
使用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选项,其中只有遵循您传递给它的命令行符号链接。
find /dir -type f -follow -print
-type f
意味着它会显示实时文件(不是符号连接)
-follow
意味着它会跟着你的目录符号链接
-print
将导致它来显示文件名。
如果你想有一个LS型显示器,你可以做以下
find /dir -type f -follow -print|xargs ls -l
ls -R -L
-L
解引用符号链接。这也将使得看不到文件的任何符号链接 - 它们看起来像指向文件。
如何tree? tree -l
将遵循符号链接。
免责声明:我写了这个包。的 文件到
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在其搜索过程中发现了到子目录的符号链接,则将搜索 符号链接所指向的子目录 。
我知道tree
是合适的,但我没有安装树。所以,我有一个非常密切的替代here
find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
的可能的复制[如何只使用Linux获取文件名\`找到\`?](http://stackoverflow.com/questions/5456120/how-to -only-get-file-name-with-linux-find) – 2016-11-25 11:15:04