2016-05-07 109 views
0

我想比较两个目录,并且能够将一个文件从一个目录复制到另一个目录(例如,将文件dog.png从目录1复制到目录2 if这个没有这个文件)Linux:将循环与循环比较

我知道有“diff”命令diff -rq rep1 rep2其中包括递归,但我不认为结果是方便的(它呈现的方式)使用它。另外,只要第二个目录中存在相同的文件,它就不关心路径。

我的想法是列出rep1的元素,然后做一个循环,如果有另一个目录,打开它并做另一个循环,直到只有文件,然后比较并返回到先前的循环。我知道这似乎是递归,我想知道是否有可能这样做?或者如果它太复杂。

+0

“repertories”是什么意思?我从来没有听说过在计算中使用的术语,字典也没有列出任何计算意义。那么“从剧目中拷贝一个文件”是什么意思?你的问题很不清楚。也许一些例子可能有所帮助 – kaylum

+0

我的意思是目录,对不起!我想将每个文件从一个目录复制到另一个目录。例如,如果我在rep1/images/dog.png中有一个名为“dog.png”的文件,并且在其他目录(rep2/images/dog.png)中没有相同的文件,那么我将复制该文件从rep1到rep2 –

+0

那么为什么不'cp -r rep1/* rep2'? '-r'表示递归复制。 – kaylum

回答

0

Mike C:欢迎来到Stack Overflow!我会尝试将此Q提交到另一个站点https://softwareengineering.stackexchange.com/,因为它不太适合堆栈溢出的“规范”,通常您会问关于具体代码的问题。我会尽量回答Q.

是的,你可以用递归来解决这个问题。您将创建一个函数或方法,在输入目录时获取目录的完整路径,然后该函数将列出所有子目录并在每个目录上调用其自身。

taht你会paralelle被扫描两个目录会增加一些复杂性,因为你必须决定如何处理3例做的事实:

  • 子目录只存在于
  • 子目录只存在于乙
  • 子目录中都存在

我将通过传递两个完整路径的功能实现这一点,只需更改behsaviour时,其中一人null