递归列出所有目录和文件
我想收到以下输出。
假设文件系统上的目录结构如下:
-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 。 -在另一个文件中输入 f
?
I would like to receive the following output.
Suppose the directory structure on the file system is like this:
-dir1 -dir2 -file1 -file2 -dir3 -file3 -file4 -dir4 -file5 -dir5 -dir6 -dir7
The output from the script must be like:
Directories:
/dir1 /dir1/dir2 /dir1/dir2/dir3 /dir1/dir2/dir4 /dir1/dir5 /dir1/dir5/dir6 /dir1/dir5/dir7
Files:
/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
Could you tell me how to keep the output of find . -type d
and find . -type f
into another file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
在 Windows 中,仅列出目录:
列出所有文件(不列出目录):
将输出重定向到文件:
dir 命令参数在维基百科上解释
In windows, to list only directories:
to list all files (and no directories):
redirect the output to a file:
dir command parameters explained on wikipedia
Bash/Linux Shell
目录:
文件:
Bash/Shell 进入文件
目录:
文件:
Bash/Linux Shell
Directories:
Files:
Bash/Shell Into a file
Directories:
Files:
在 shell 中:
给出当前工作目录中的目录,并且:
给出当前工作目录中的文件。
将
.
替换为您感兴趣的目录。in shell:
gives directories from current working directory, and:
gives files from current working directory.
Replace
.
by your directory of interest.在 Windows 上,您可以这样做,作为最灵活的解决方案,允许您另外处理目录名称。
您可以使用 FOR /R 递归执行批处理命令。
查看这个批处理文件。
与文件类似,您可以根据您的情况添加模式作为一组而不是点
On Windows, you can do it like this as most flexibile solution that allows you to additionally process dir names.
You use FOR /R to recursively execute batch commands.
Check out this batch file.
Similary for files you can add pattern as a set instead of dot, in your case
在 Linux 中,一个简单的命令
将为您提供所有包含的项目的列表,其中包含混合的目录和文件。 您可以将此输出保存到临时文件,然后提取以“d”开头的所有行; 这些将是目录。 以“f”开头的行是文件。
In Linux, a simple
will give you a list of all the contained items, with directories and files mixed. You can save this output to a temporary file, then extract all lines that start with 'd'; those will be the directories. Lines that start with an 'f' are files.
这是一个老问题,但我想我还是要补充一些东西。
DIR 无法正确遍历您想要的所有目录树,特别是 C: 上的目录树。 由于保护措施不同,它只是在某些地方放弃了。
ATTRIB 的效果要好得多,因为它可以找到更多内容。 (为什么会出现这种差异?为什么微软会让一个实用程序以一种方式工作,而另一个实用程序在这方面以不同的方式工作?如果我知道的话就该死。)根据我的经验,处理这个问题的最有效方法是获得两个列表,尽管这是一个拼凑:
并获取它们之间的差异。 这个区别在于 C: 上的目录(除了那些隐藏得太好的目录)。 对于 C:,我通常会以管理员身份运行来执行此操作。
This is an old question, but I thought I'd add something anyhow.
DIR doesn't traverse correctly all the directory trees you want, in particular not the ones on C:. It simply gives up in places because of different protections.
ATTRIB works much better, because it finds more. (Why this difference? Why would MS make one utility work one way and another work different in this respect? Damned if I know.) In my experience the most effective way to handle this, although it's a kludge, is to get two listings:
and get the difference between them. That difference is the directories on C: (except the ones that are too well hidden). For C:, I'd usually do this running as administrator.
在 Windows 中:
dir /ad /b /s
dir /ad /b /s
In Windows :
dir /ad /b /s
dir /a-d /b /s