Shell 递归列出所有目录和文件

Shell 递归列出所有目录和文件,shell,recursion,directory-listing,Shell,Recursion,Directory Listing,我希望收到以下输出 假设文件系统上的目录结构如下所示: -dir1 -dir2 -file1 -file2 -dir3 -file3 -file4 -dir4 -file5 -dir5 -dir6 -dir7 -dir1 -dir2 -文件1

我希望收到以下输出

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

-dir1 -dir2 -file1 -file2 -dir3 -file3 -file4 -dir4 -file5 -dir5 -dir6 -dir7 -dir1 -dir2 -文件1 -文件2 -dir3 -文件3 -文件4 -dir4 -文件5 -dir5 -dir6 -迪尔7 脚本的输出必须如下所示:

目录:

/dir1 /dir1/dir2 /dir1/dir2/dir3 /dir1/dir2/dir4 /dir1/dir5 /dir1/dir5/dir6 /dir1/dir5/dir7
dir /ad /b /s
dir /a-d /b /s
/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 /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的输出吗-键入d和查找-在另一个文件中键入f

Bash/Linux Shell 目录:

find ./ -type d 
find ./ -type d  > somefile.txt
档案:

find ./ -type f 
find ./ -type f  > somefile.txt
Bash/Shell文件 目录:

find ./ -type d 
find ./ -type d  > somefile.txt
档案:

find ./ -type f 
find ./ -type f  > somefile.txt
在壳牌:

find . -type d
提供当前工作目录中的目录,以及:

find . -type f
提供当前工作目录中的文件


用您感兴趣的目录替换

在Windows中:

dir/ad/b/s


dir/a-d/b/s

在windows中,仅列出目录:

/dir1 /dir1/dir2 /dir1/dir2/dir3 /dir1/dir2/dir4 /dir1/dir5 /dir1/dir5/dir6 /dir1/dir5/dir7
dir /ad /b /s
dir /a-d /b /s
要列出所有文件(无目录),请执行以下操作:

将输出重定向到文件:

dir /a-d /b /s > filename.txt
在Linux中,一个简单的

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

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

在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!
)
同样,对于文件,在您的情况下,您可以将图案作为一个集合而不是点添加

 (*.*)

这是个老问题,但我想我还是要补充一点

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

ATTRIB工作得更好,因为它发现了更多。(为什么会有这种差异?为什么微软会让一个公用事业公司的工作方式不同,而另一个公用事业公司的工作方式不同?如果我知道的话,那就糟了。)根据我的经验,处理这一问题的最有效方法,尽管这是一个难题,是获得两个列表:

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

属性C:\>%TEMP%\C-without-directories.txt


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

呃,有一个不一致的地方,文件输出中列出了目录。这不是错了吗?您好,我使用unix/aix-KornShell,如果出现问题,我会道歉。我是这个领域的新手。可以不按文件夹分组而列出文件大小吗?我想导入Excel并做一些报告。@Nic Cottrell如果删除/b,它将显示文件大小和时间戳