Shell 递归列出所有目录和文件
我希望收到以下输出 假设文件系统上的目录结构如下所示: -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/dir7Shell 递归列出所有目录和文件,shell,recursion,directory-listing,Shell,Recursion,Directory Listing,我希望收到以下输出 假设文件系统上的目录结构如下所示: -dir1 -dir2 -file1 -file2 -dir3 -file3 -file4 -dir4 -file5 -dir5 -dir6 -dir7 -dir1 -dir2 -文件1
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,它将显示文件大小和时间戳