【发布时间】:2016-10-02 14:30:33
【问题描述】:
我需要制作一个“列出当前工作目录下所有相同的子目录(递归)”的 shell 脚本。
我是 shell 脚本的新手。我该如何处理?
对我来说,这意味着:
- 对于从某个起始目录开始的每个目录,将其与按名称共享的每个其他目录进行比较。
- 如果其他目录具有相同的名称,请检查大小。
- 如果大小也相同,递归地逐项比较每个目录的内容,可能是
md5sum(?) 并继续对目录中的每个子目录进行比较(递归地?)
- 如果大小也相同,递归地逐项比较每个目录的内容,可能是
- 如果其他目录具有相同的名称,请检查大小。
- 然后,通过在遇到的每个子目录上递归调用它来继续
- 然后,对目录结构中的每个其他目录重复此操作
这将是我写过的最复杂的程序,所以我想我只是不知道有一些 shell 命令可以为我完成大部分工作?
即,我应该如何处理这个问题?所有其他部分都是关于谷歌搜索,直到我发现 shell 命令为我完成了 90% 的工作。
(对于之前未能完成的作业,这部分得了零分,需要知道以后如何处理。)
【问题讨论】:
-
输入输出样例?
-
没有给出,我假设输入是当前工作目录,输出是被认为相同的目录列表。抱歉,不能更具体
-
取决于您对重复的具体含义。
dir1/file{1,2,3}与dir2/file{1.2,3}其中file{1,2,3}与重复计数相同吗?注意 dir1/dir2 是不同的。如果dir2/file{1,2,3}下降了 3 个级别,这是否算作与原始dir1中相同文件的匹配?这里有很多可能性,学习机会可能在于“您如何确定需要被视为欺骗(以及为什么)的正确规范?”。祝你好运。