我有一个名为 的目录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
不需要xargs
;find
可以处理:
find . -mindepth 1 -type d \! -exec test -e '{}/stdout' \; -exec echo cp -r '{}' ../dir2 \;
或者使用现代版本的find
,\+
会做find
类似xargs
的事情(或者,可怕的是,800 个叉子!)
- 您需要
-mindepth 1
排除该./
文件夹,否则会复制所有子目录。 - 该
-exec
命令包含一个调试echo
选项,用于在执行复制之前查看要执行的过程