文件夹和文件副本太多



我想每个人都熟悉这个脚本:

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,结果都是一样的。它们都开始复制目录路径的每个部分。

任何想法?

你有两个问题:

  1. 你试图递归地复制一个递归列表(双递归),从而包括你不想要的文件
  2. 复制时不保留与源基目录相关的目录结构,从而得到一个混乱的树

相反,您应该非递归地将文件的递归列表放到相应的目录中。您可以对rsync--files-from和过程替换执行此操作:

rsync --from0 --files-from <(find ./src -mtime +5 -print0) 
  ./  ./target

或者,通过cpio:

find src/ -mtime +5 -print0 | cpio -0 -o | { cd target && cpio -i; }

相关内容

  • 没有找到相关文章

最新更新