当前位置: 首页>>技术问答>>正文


如何列出树中的所有文件(目录及其子目录)?

, , , , ,

问题描述

对于我的任务,我需要列出树中的所有文件(目录,其所有子目录,所有子目录等)。

我更喜欢在Nautilus或Krusader中看到它们,但是命令行解决方案也很有趣(在这种情况下,我需要列出文件的全名,大小和修改时间)。

最佳解决办法

tree对您来说非常方便。

sudo apt-get install tree

使用tree filepath列出文件。

次佳解决办法

ls -alR

这可能是最简单的方法。我只是在破解一个查找脚本,以便为您提供更多控制。

第三种解决办法

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

您可以根据需要使用printf格式。这为您提供了一个很好的机会,可以按照您需要的方式格式化事物,如果您在另一个应用程序中使用输出,这是非常宝贵的。

更多:http://linux.about.com/od/commands/l/blcmdl1_find.htm

为了更好的可读性,您可以通过column命令对其进行管道处理,它将自动调整大小,以便它们排成一行。

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t

第四种办法

正如Oli回答的那样,find将允许您搜索整个目录树:

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

# Where %TY will display the mod. time year as 4 digits
#       %Tm will display the mod. time month as 2 digits
#       %Td will display the mod. time day as 2 digits
#       %s displays the file size in bytes
#       %p displays the full path name of the file

您可能还希望使用-type f选项将结果限制为仅文件。如果要匹配文件模式,则需要-name-iname选项(区分大小写,不区分大小写匹配)。阅读find的手册页 – 您可以使用大量选项来缩小/优化搜索。

另外,如果您希望将多个屏幕数据放回给您,请记住通过less管理您的结果。

@Oli:+1我刚学到了新东西 – column。之前没有用过。

第五种办法

ls是在Ubuntu和其他Linux和Unix操作系统中列出文件的标准命令。 ls特别有用,因为您会发现它安装在您遇到的每个Unix系统上。默认情况下,运行此选项仅显示当前目录中的文件。

然而,-R ‘flag’是递归选项(注意大写字母R,而不是r),它也会显示所有sub-directories。

您也要求”details” – 为此您需要-l标志(这是一个小写的L,而不是第一个)。请注意,这会为您提供文件权限信息以及文件大小,时间/日期信息和文件名。

如果您还要显示隐藏文件/文件夹(相当于Nautilus中的Ctrl + H),则添加-a ‘all’标志。

您可以将标志合并在一起,为您提供以下内容:

ls -lR

如果你在任何体面的文件夹上运行它,你会发现这会产生巨大的长输出,可以非常快速地向下滚动屏幕。为了解决这个问题,您可以通过一个名为less的程序’pipe’输出ls(该名称是类似于more的模仿,它是第一个但具有更多功能)。

ls -lR | less

这将允许您使用向上/向下箭头键和PageUp /Down以更舒适的速度通过输出。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2174.html,未经允许,请勿转载。