2017-02-23 67 views
0

在unix中。 我如何複製具有一定的模式(「模式」),保持子文件夾結構的文件到新的位置:unix cp文件從子文件夾模式到新目標保存子文件夾

/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 

這一定是以前曾經問過的,但是我沒有找到它。

+0

看看其'exec'功能沿'find'效用。 – arkascha

+0

我知道這個謝謝 - 但我仍然無法保存文件夾結構。例如。 find/from/* dir/-type f -iregex「* pattern *」-exec cp {}/to/\ – user3375672

回答

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 -) 
相關問題