2012-04-28 72 views
0

我需要編寫一個將文件移動到目標位置(關閉卷)的腳本,刪除原始文件和目錄,然後將它們移回原始位置,同時保留所有屬性。如何修改目錄樹以使最低級別的目錄第一個和最高級目錄最後一個操作?

這個概念在算法上相當簡單,然而我使用的真正掛斷是在我使用rsync時正確地遞歸樹。

到目前爲止,似乎rsync -axvvES --remove-source-files source_directory /destination/是複製文件的最有效的解決方案,但是,正如所指出的,我不能簡單地允許rsync由於大小限制而遞歸樹本身。最終我認爲find可以用於向下鑽取,然後允許rsync運行,但是爲了完成這個目標,我怎麼能先用find降到最低點?

UPDATE:

歸根結底,這似乎這樣令人滿意的伎倆:

echo -e "Moving over... " 
rsync -axvES --remove-source-files ${SRC_FILE_AND_PATH} ${DESTINATION_PATH}/ 
echo -e "Bringing back... " 
rsync -axvES --remove-source-files ${DESTINATION_PATH}/${SRC_BASENAME} ./ 

它留下的文件夾在工作目錄,但由於它的初始文件夾正確地覆蓋在移動屬性回來,這是令人滿意的,最後我可以留下剩餘的空目錄。

+0

我不明白什麼是不滿意你目前的命令。您需要首先創建目標目錄,然後填充它們,您希望以不同的方式做什麼?如果問題是刪除的順序,你想要什麼,而不是任何適合的「--delete- *」選項? – Gilles 2012-04-29 17:41:40

回答

1

find命令有一個-depth開關,使它的行爲像你所要求的。

相關問題