2016-05-07 162 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