将不包含特定文件的子目录复制到另一个目录

将不包含特定文件的子目录复制到另一个目录

我有一个名为 的目录dir1,其中包含大约 800 个名为 的子目录disp-001, disp-002, ... disp-800。我stdout根据给定的解决方案获取不包含文件的子目录列表这里作为

$ find . -type d \! -exec test -e '{}/stdout' \; -print

我现在想将不包含该文件的子目录复制到另一个目录 dir2 中。我使用 xargs 来完成此操作

$ find . -type d \! -exec test -e '{}/stdout' \; -print |xargs -I cp -r {} ../dir2

然而,这引发了一个错误xargs: {}: No such file or directory

如何将这些子目录复制到另一个目录

答案1

不需要xargsfind可以处理:

find . -mindepth 1 -type d \! -exec test -e '{}/stdout' \; -exec echo cp -r '{}' ../dir2 \;

或者使用现代版本的find,\+会做find类似xargs的事情(或者,可怕的是,800 个叉子!)

  • 您需要-mindepth 1排除该./文件夹,否则会复制所有子目录。
  • -exec命令包含一个调试echo选项,用于在执行复制之前查看要执行的过程

相关内容