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 d
并find . -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理员身份执行此操作。