【问题标题】:Recursively List all directories and files递归列出所有目录和文件
【发布时间】:2010-10-19 08:21:19
【问题描述】:

我想收到以下输出。

假设文件系统上的目录结构是这样的:

-dir1 -dir2 -file1 -文件2 -dir3 -file3 -file4 -dir4 -file5 -dir5 -dir6 -dir7

脚本的输出必须是这样的:

目录:

/目录1 /目录1/目录2 /dir1/dir2/dir3 /dir1/dir2/dir4 /dir1/dir5 /dir1/dir5/dir6 /dir1/dir5/dir7

文件:

/目录1 /dir1/dir2/file1 /dir1/dir2/file2 /dir1/dir2/dir3/file3 /dir1/dir2/dir3/file4 /dir1/dir2/dir4/file5 /dir1/dir5/dir6 /dir1/dir5/dir7

您能告诉我如何将find . -type dfind . -type f 的输出保存到另一个文件中吗?

【问题讨论】:

  • er,存在不一致,您的文件输出中列出了目录。是不是,错了?
  • 您好,我使用的是 unix/aix - 如果出现问题,korn shell 深表歉意。 .我是这个领域的新手

标签: shell recursion directory-listing


【解决方案1】:

Bash/Linux 外壳

目录:

find ./ -type d 

文件:

find ./ -type f 

Bash/Shell 到文件中

目录:

find ./ -type d  > somefile.txt

文件:

find ./ -type f  > somefile.txt

【讨论】:

    【解决方案2】:

    在外壳中:

    find . -type d
    

    提供当前工作目录中的目录,并且:

    find . -type f
    

    提供当前工作目录中的文件。

    . 替换为您感兴趣的目录。

    【讨论】:

      【解决方案3】:

      在 Windows 中:

      目录 /ad /b /s

      dir /a-d /b /s

      【讨论】:

        【解决方案4】:

        在 Windows 中,仅列出目录:

        dir /ad /b /s
        

        列出所有文件(不包括目录):

        dir /a-d /b /s
        

        将输出重定向到文件:

        dir /a-d /b /s > filename.txt
        

        dir command parameters explained on wikipedia

        【讨论】:

        • 是否可以在不按文件夹分组的情况下列出文件大小?我想导入 Excel 并做一些报告。
        • @Nic Cottrell 如果删除 /b,它将显示文件大小和时间戳
        【解决方案5】:

        在 Linux 中,一个简单的

        find . -printf '%y %p\n'
        

        将为您提供所有包含项目的列表,其中包含目录和文件。您可以将此输出保存到临时文件中,然后提取所有以 'd' 开头的行;这些将是目录。以“f”开头的行是文件。

        【讨论】:

          【解决方案6】:

          在 Windows 上,您可以像大多数灵活的解决方案一样执行此操作,该解决方案允许您额外处理目录名称。

          您使用 FOR /R 递归执行批处理命令。

          查看这个批处理文件。

          @echo off
          SETLOCAL EnableDelayedExpansion
          
          SET N=0
          for /R %%i in (.) do (
               SET DIR=%%i
          
               ::put anything here, for instance the following code add dir numbers.
               SET /A N=!N!+1
               echo !N! !DIR!
          )
          

          类似的文件,你可以将模式添加为集合而不是点,在你的情况下

           (*.*)
          

          【讨论】:

            【解决方案7】:

            这是一个老问题,但我想无论如何我都会添加一些东西。

            DIR 无法正确遍历您想要的所有目录树,尤其是 C: 上的目录树。由于保护措施不同,它只是在某些地方放弃了。

            ATTRIB 工作得更好,因为它发现更多。 (为什么会有这种差异?为什么 MS 会让一个实用程序以一种方式工作,而另一种在这方面工作不同?如果我知道,该死的。)根据我的经验,处理这个问题的最有效方法,虽然它是一个 kludge,是获得两个列表:

            attrib /s /d C:\ >%TEMP%\C-with-directories.txt

            attrib /s C:\ >%TEMP%\C-without-directories.txt

            并找出它们之间的区别。那个区别是 C: 上的目录(除了那些隐藏得太好的目录)。对于 C:,我通常会以管理员身份运行。

            【讨论】:

              猜你喜欢
              • 2010-10-04
              • 1970-01-01
              • 1970-01-01
              • 2010-10-30
              • 1970-01-01
              • 1970-01-01
              • 2011-07-11
              • 2014-10-13
              • 2017-10-31
              相关资源
              最近更新 更多