2013-10-17 47 views
1

我想將源目錄中的某些文件複製到目標目錄。源目錄包含以下文件。如何複製linux中的特定文件?

源目錄路徑是〜/證書/

drwxrwxr-x 2 ubuntu ubuntu  4096 Oct 16 11:58 apache 
-rw-rw-r-- 1 ubuntu ubuntu  5812 Oct 16 11:20 apache.keystore 
-rw-rw-r-- 1 ubuntu ubuntu  1079 Oct 16 08:31 csr.txt 
-rwxr-xr-x 1 ubuntu ubuntu 36626564 Oct 16 10:08 my.war 
drwxrwxr-x 2 ubuntu ubuntu  4096 Oct 16 09:39 tomcat 
-rw-rw-r-- 1 ubuntu ubuntu  6164 Oct 16 09:31 tomcat.keystore 

我想所有文件複製到〜/證書/除my.war(證書是目標目錄)。我嘗試了以下命令,但沒有成功。我不想將my.war暫時移出文件夾。

cp -r ~/certificate/(?!m)* ~/cert/. 

請幫我用合適的正則表達式或任何其他工具。

+3

一般目的解決方案會很方便,但我的意思是,它只有5個文件。我希望這不會阻止你。那麼'cp a * c * t *〜/ cert /'怎麼樣? – meagar

回答

2

假設你正在使用bash,您可以啓用extglob選擇和使用:

cp -r ~/certificate/!(my.war) ~/certs/ 

使用

shopt -s extglob 

啓用該選項。

這裏給relevant documentation.

1

好吧,既然它是與「M」開頭的唯一文件,你可以做 cp -r ~/certificate/[a-ln-z]* ~/cert

0

你可以嘗試使用鏈接「find」命令。它查找目錄中的所有文件,除了「my.war」文件並對所有找到的文件執行「cp」命令。

find . -type f \(-iname "*" ! -iname "my.war" \) -exec cp {} ./cert/ \; 
0

爲了完整:a zsh解決方案。在與EXTENDED_GLOB選項設置,你可以做的zsh(見documentation):

cp -r ~/certificate/^my.war ~/certs 

KSH_GLOB(和NO_BARE_GLOB_QUAL)選項設置您可以使用相同的ksh語法在bash:

cp -r ~/certificate/!(my.war) ~/certs 
相關問題