如何递归目录树以在最低目录和最高目录上运行?

时间:2012-04-28 20:40:54

标签: bash find rsync zsh

我需要编写一个脚本,将文件移动到目标位置(关闭卷),删除原始文件和目录,然后将它们移回原始位置,同时保留所有属性。

这个概念在算法上相当简单,但是当我使用rsync时,我正在进行的实际挂机正确地递归树。

到目前为止,似乎rsync -axvvES --remove-source-files source_directory /destination/是复制文件的最有效解决方案,但是,如上所述,由于大小限制,我不能简单地允许rsync递归树本身。最后,我认为可以使用find向下钻取,然后允许rsync运行,但是我怎样才能首先使用find下降到最低点以实现此目标吗

更新:

最终,这似乎是令人满意的伎俩:

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} ./

它确实将文件夹保留在工作目录中,但由于它确实在移动后的初始文件夹上正确覆盖了属性,因此它是令人满意的,最后我可以查看空的剩余目录。

1 个答案:

答案 0 :(得分:1)

find命令有一个-depth开关,使其表现得像你要求的那样。