我正在尝试将源目录中的一些文件复制到目标目录。源目录包含以下文件。
源目录路径是〜/ certificate /
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
我想将所有文件复制到〜/ certs /,除了my.war(certs是目标目录)。我没有成功尝试以下命令。我不想暂时将my.war移出文件夹。
cp -r ~/certificate/(?!m)* ~/cert/.
请使用合适的正则表达式或任何其他工具帮助我。
答案 0 :(得分:2)
假设您正在使用bash
,则可以启用extglob
选项并使用:
cp -r ~/certificate/!(my.war) ~/certs/
使用
shopt -s extglob
启用该选项。
的链接答案 1 :(得分:1)
好吧,因为它是唯一一个以'm'开头的文件,你可以做到
cp -r ~/certificate/[a-ln-z]* ~/cert
答案 2 :(得分:0)
您可以尝试使用“find”命令。它找到目录中的所有文件,“my.war”文件除外,并为所有找到的文件执行“cp”命令。
find . -type f \( -iname "*" ! -iname "my.war" \) -exec cp {} ./cert/ \;
答案 3 :(得分:0)
完整性:zsh解决方案。在zsh中设置了EXTENDED_GLOB
选项,您可以执行此操作(请参阅documentation):
cp -r ~/certificate/^my.war ~/certs
或使用KSH_GLOB
(和NO_BARE_GLOB_QUAL
)选项设置,您可以使用与bash中相同的ksh语法:
cp -r ~/certificate/!(my.war) ~/certs