在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上找到它。
答案 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 -)