获取文件中文件夹和子文件夹中所有文件的列表


28

如何获取文件夹中所有文件的列表,包括所有子文件夹中的所有文件,并将输出放入文件中?

Answers:


39

您可以在命令行上使用-R开关(递归)执行此操作,然后将输出通过管道传递到文件,因此:

ls -R > filename1

这将在当前目录中创建一个名为filename1的文件,其中包含当前目录及其下所有子目录的完整目录列表。

您可以通过指定完整路径来列出当前目录以外的目录,例如:

ls -R /var > filename2

会列出/ var下的所有内容,并将结果放入当前目录中的文件名filename2中。只要您具有目录的读取访问权限,它就可以对另一个用户(包括root)拥有的目录起作用。

您也可以使用sudo命令列出您无权访问的目录,例如/ root。例如:

sudo ls -R /root > filename3

将列出/ root中的所有内容,并将结果放入当前目录中名为filename3的文件中。由于大多数Ubuntu系统在此目录中都没有文件名,因此filename3将不包含任何内容,但是如果存在,它将起作用。


也许告诉别人首先进入目录cd可以添加答案。如果我拥有目录,这也很好,但是如果尝试在目录中说是root拥有,那我就没有了。也给予了拒绝。是否可以不以root用户身份登录而解决?
达米安2012年

好吧,我确实说过“当前”目录。正确使用CD可能会引起另一个问题,我敢肯定这已经成为问题。您可以列出root拥有的目录,只要您对其具有读取权限即可。用户具有读取权限的根用户拥有的目录可以用ls -R列出。很难想象为什么要列出没有读取访问权限的root拥有的目录,但是如果您给出完整路径,sudo确实可以工作。我将为这两个示例添加示例,但不包括使用CD。
fabricator4

8

安装树

递归的替代方法ls是命令行工具tree,该工具带有许多自定义显示的输出格式的选项。有关所有选项,请参见的手册


7

只需使用find带有目录名称的命令即可。例如,要查看主目录中的文件和文件夹中的所有文件,请使用

find ~

查看命令的查找手册find联机帮助页图标

另外,通过info find在终端中使用命令来检查find GNU info页面。


这是最强大的方法。find有许多参数可定制输出格式和文件选择。
pauljohn32 '18

我认为这是最好的方法。简单实用。$ find . > output如果目录很多,也可以这样做。
felippe

4

也:

gvfs-tree /path/to/folder/

使用其他字符作为行,将为您提供与树相同的效果。

tree -a

也显示隐藏文件

tree -i

不显示行


1
  1. 转到要从中获取内容列表的文件夹。
  2. 在列表中选择所需的文件(如果需要整个文件夹,请选择Ctrl+ A)。
  3. Ctrl+ 复制内容C
  4. 打开gedit并使用Ctrl+ 粘贴内容V。它将粘贴为列表,然后您可以保存文件。

但是,此方法将不包括子文件夹。


1

您也可以使用与Takkat tree建议的Baobab相对应的GUI 。它通常用于分析磁盘使用情况,用于查看文件夹和子文件夹。如果您使用的是GNOME桌面,则可能已经安装了它(通常称为磁盘使用情况分析器)。

sudo apt-get install baobab

您可以选择一个文件夹,还可以查看其所有子文件夹,同时还可以获取文件夹的大小及其内容,如下面的屏幕快照所示。您只需单击小的向下箭头即可查看文件夹中的子文件夹。对于快速了解文件夹中的内容并可以生成可见列表非常有用,但是目前无法将其导出到文件中。但是,已在Launchpad中将其作为功能部件进行了请求。如果使用,甚至可以使用它来查看根文件系统gksudo baobab

(您还可以通过使用获取文件及其大小的列表,ls -shR ~/myfolder然后将其导出到文件。)

在此处输入图片说明


OP希望将结果保存在文件中,大概可以对文件进行其他处理。虽然猴面包树是一个很好的工具,但它似乎不能满足OP最初提出的问题的要求。
fabricator4

@ fabricator4我还添加了ls选项,因为baobab当前无法输出列表。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.