2016-02-05 24 views
1

我有一個bash腳本查找和文件複製到另一個文件擴展名的文件,bash腳本查找和複製與多個擴展,包括有2個或3個分機

find . -name '*.so' -name '*.lib' -exec cp{} $destination \ 

以上腳本將剛纔複製所有的.so文件到$destination並忽略* .lib。而且我有更多的文件中有2個或3個分機的目錄,如 test.so.55 , test1.so.bkk

我如何調整我的上述代碼,以便它可以在所有'*.so''*.lib''*.so.*'文件複製到$destination。 此外,我已經嘗試使用,

Try1: 

find . -name '*.so' -name '*.lib' -name '*.so.*' -exec cp{} $destination \ 

和甚至

Try2 

find . -name '*.so' -exec cp{} $destination \ 
find . -name '*.so.*' -exec cp{} $destination \ 
find . -name '*.lib' -exec cp{} $destination \ 

但上面的代碼將只複製*。所以在在嘗試1個*.so and *.lib文件和多年平均值複製*.so.**.so.55 , *.so.bkk在嘗試2.

我有成千上萬的文件,我如何調整我的代碼,以便它會將所有 *.so , *.lib and *.so.*複製到目的地?

回答

1

使用OR子句中的模式匹配:

find . \(-name '*.so' -o -name '*.lib' -o -name '*.so.*' \) -exec cp{} $destination \;