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将遵循符号链接。
免责声明:我写了这个程序包。