LINUX递归列出目录中的所有文件,包括symlink目录中的文件

时间:2020-03-06 14:27:41  来源:igfitidea点击:

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

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

解决方案

ls的-L选项将完成我们想要的。它取消引用符号链接。

因此,命令将是:

ls -LR

我们也可以使用

find -follow

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

在Mac OS X上使用

find -L

因为-follow已被弃用。

使用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 -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 -l将遵循符号链接。

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