我认为每个人都熟悉这个剧本:
find /dir1/dir2/dir3/dir4/* -mtime +5 -exec cp -rf {} /dirA/dirB/dirC/ \;
我的问题是,我希望将dir4的超过5天的内容(更多子目录及其内容)复制到目录结构完整的dirC中。到目前为止听起来不错,脚本应该完成我想的工作。
但它没有做我认为应该做的事情。相反,它从dir1开始,向下钻到最低文件夹并开始复制,然后它上升并在dir4中重新开始,依此类推。最终结果是文件夹结构中的所有内容都被多次复制。
我已经尝试使用rsync,cpio和pax来代替cp以及相同的结果,无论我是在做rsync -r还是cpio -r还是pax -r。它们都开始复制目录路径的每个部分。
有什么想法吗?
答案 0 :(得分:2)
你有两个问题:
相反,您应该非递归地将递归的文件列表添加到相应的目录中。您可以使用rsync
的{{1}}和流程替换执行此操作:
--files-from
或者,通过rsync --from0 --files-from <(find ./src -mtime +5 -print0) \
./ ./target
:
cpio