我找到了以下linux命令。
cp -f [!r][!e][!d][!m][!i][!n][!e]* /SomePath
我知道cp
的作用,-f
也没问题。但是我不知道方括号和感叹号是做什么的([!r]
,[!e]
,[!d]
,[!m]
,[!i]
,[!n]
)。谁能帮我吗?
An expression "[!...]" matches a single character, namely any character
that is not matched by the expression obtained by removing the first '!' from it.
因此,在您提到的命令中,其效果是不会将任何以redmine
开头的文件复制到/SomePath
。
这在手册的pattern matching下有描述:
[…]
匹配任何包含的字符。 [...]如果[
之后的第一个字符是!
或^
,则匹配所有未包含的字符。
因此,[!r]
是r
以外的任何字符,[!e]
是e
以外的任何字符,依此类推。 [!r][!e][!d][!m][!i][!n][!e]*
扩展为所有不以字符串redmine
开头的文件的名称(除非以.
开头的文件,除非设置了dotglob
shell选项)。
还有另一个外壳程序选项,可以使您写得更优雅一些:
之外的所有内容。shopt -s extglob cp -f !(redmine)* /SomePath
其中
!(pattern)
匹配除[[pattern