unix cp文件从子文件夹到模式到新目标保存子文件夹

时间:2017-02-23 14:29:10

标签: unix cp subdirectory

在unix中。 如何将具有特定模式(“模式”)的文件复制到保留子文件夹结构的新位置:

/from/dir1name/a.pattern.b
/from/dir1name/c.pattern.d
/from/dir2name/e.pattern.f
/from/dir2name/g.pattern.h

应该复制到:

 /to/dir1name/a.pattern.b
 /to/dir1name/c.pattern.d
 /to/dir2name/e.pattern.f
 /to/dir2name/g.pattern.h

此处的某些内容不会保留子文件夹结构:

cp /from/*dir/*pattern* /to/

我是否需要循环来掌握目录名称(psuodocode):

for d in from/dir*; do cp "from/$d/*pattern*" "to/$d/"; done

之前必须提出这个问题,但我没有在SO上找到它。

1 个答案:

答案 0 :(得分:1)

GNU cp有一个--parents选项可能很有用。 cd /from ; cp --parents dir*/*pattern* /to/

您首先需要cd,因此您希望复制的路径部分不会出现在cp的源参数中。

在传统的unix cp中没有相应的东西;您必须编写自己的循环并包含mkdir中间级别的命令,或者作弊并使用tar

(cd /from ; tar cf - dir*/*pattern*) | (cd /to ; tar xvf -)