【发布时间】:2010-09-11 10:29:49
【问题描述】:
假设我有一个目录/dir,其中有 3 个指向其他目录的符号链接
/dir/dir11、/dir/dir12 和 /dir/dir13。我想列出dir 中的所有文件,包括dir11、dir12 和dir13 中的文件。
为了更通用,我想列出所有文件,包括目录中的符号链接文件。 find .、ls -R 等在符号链接处停止,无需导航到它们以进一步列出。
【问题讨论】:
标签: linux
假设我有一个目录/dir,其中有 3 个指向其他目录的符号链接
/dir/dir11、/dir/dir12 和 /dir/dir13。我想列出dir 中的所有文件,包括dir11、dir12 和dir13 中的文件。
为了更通用,我想列出所有文件,包括目录中的符号链接文件。 find .、ls -R 等在符号链接处停止,无需导航到它们以进一步列出。
【问题讨论】:
标签: linux
ls 的 -L 选项将完成您想要的。它取消引用符号链接。
所以你的命令是:
ls -LR
您也可以使用
find -follow
-follow 选项指示 find 遵循指向目录的符号链接。
在 Mac OS X 上使用
find -L
-follow 已被弃用。
【讨论】:
-follow- 它说找不到文件夹ollow
find -L . — 我遇到了和 @S.Matthew_English 相同的问题
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 -L 选项更漂亮的显示
ls -R -L
-L 取消引用符号链接。不过,这也将导致无法看到文件的任何符号链接 - 它们看起来就像指向的文件。
【讨论】:
tree 怎么样? tree -l 将跟随符号链接。
免责声明:我写了这个包。
【讨论】:
ls 更直观的视图。它也更容易粘贴。
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属性 链接指向的文件,而不是链接本身(除非它是损坏的符号链接或 find 无法找到 检查文件以 链接指向)。使用此选项意味着 -noleaf。如果您稍后使用 -P 选项,-noleaf 仍将有效。如果 -L 是 实际上,find 在搜索过程中发现了指向子目录的符号链接,该子目录由 符号链接将 被搜索。
【讨论】:
我知道tree 是合适的,但我没有安装树。所以,我得到了一个非常接近的替代 here
find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
【讨论】:
如果您想打印所有文件内容:
find . -type f -exec cat {} +
【讨论】: