recursion列出所有目录和文件

我想收到以下输出。

假设文件系统上的目录结构如下所示:

   -dir1
       -dir2
         -file1
         -file2
              -dir3
                 -file3
                 -file4
             -dir4
                 -file5
        -dir5
              -dir6
              -dir7

脚本的输出必须如下所示:

目录:

 / DIR1
 / DIR1 / DIR2
 / DIR1 / DIR2 / DIR3
 / DIR1 / DIR2 / dir4
 / DIR1 / dir5
 / DIR1 / dir5 / DIR6
 / DIR1 / dir5 / dir7

文件:

 / DIR1
 / 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 d的输出find . -type d find . -type dfind . -type f find . -type f到另一个文件?

在Windows中,只列出目录:

 dir /ad /b /s 

列出所有文件(没有目录):

 dir /ad /b /s 

将输出redirect到一个文件:

 dir /ad /b /s > filename.txt 

dir命令参数在维基百科解释

在shell中:

 find . -type d 

从当前工作目录提供目录,并:

 find . -type f 

从当前工作目录提供文件。

replace. 通过你感兴趣的目录。

Bash / Linux Shell

目录:

 find ./ -type d 

文件:

 find ./ -type f 

Bash / Shell进入文件

目录:

 find ./ -type d > somefile.txt 

文件:

 find ./ -type f > somefile.txt 

在Windows上,您可以像这样做,因为它是最灵活的解决scheme,允许您额外处理目录名称。

您使用FOR / Rrecursion执行批处理命令。

看看这个batch file。

 @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 /AN=!N!+1 echo !N! !DIR! ) 

相似的文件,你可以添加模式作为一套而不是点,在你的情况

  (*.*) 

在Windows中:

dir / ad / b / s

dir / ad / b / s

在Linux中,一个简单的

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

会给你所有包含的项目,目录和文件混合列表。 您可以将此输出保存到临时文件,然后提取所有以“d”开头的行; 那些将是目录。 以'f'开始的行是文件。

这是一个古老的问题,但我想我会添加任何东西。

DIR不能正确遍历你想要的所有目录树,特别是不是C:上的目录树。 它由于不同的保护而简单放弃。

ATTRIB工作得更好,因为它发现更多。 (为什么这个区别呢?为什么MS会在一个方面做一个实用工作,另一个工作在这方面有所不同呢?)据我的经验,处理这个问题的最有效的方法,虽然它是一个混乱,但是得到两个列表:

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

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

并得到他们之间的差异。 这个区别是C上的目录:(除了那些隐藏得太好的目录)。 对于C:,我通常会以pipe理员身份执行此操作。