根据条件复制文件

根据条件复制文件

这是我试图解决的问题:

  • 假设我有一个目录“A”,其中包含一些文件以及其他一些目录。
  • 我想把A目录下的所有文件复制到B目录下。
  • 我想递归地将文件夹A内的所有文件夹复制到文件夹C。

在 UNIX/Linux 中实现此目的最短且不特定于平台的方法是什么?

答案1

大概是这样的

find A -type f -maxdepth 1 -exec cp {} B/ \;

find A -type d -maxdepth 1 -mindepth 1 -exec cp -r {} C/ \;

其中-type是一个标志,确定您要查找的类型(文件或目录)、- maxdepth目录深度以及-exec对结果执行命令。

答案2

您可以使用cp复制目录,给出以/,结尾的 glob 模式

cp -a A/*/ C/

并且您可以在不使用-a(类似于-r)选项的情况下复制文件

cp A/* B/

尽管最后一个命令会在未复制的目录上给出无害的错误。

相关内容