首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cp中使用正则表达式

在cp中使用正则表达式
EN

Unix & Linux用户
提问于 2011-11-09 04:54:10
回答 4查看 50.4K关注 0票数 22

这是一个简单的问题。我试图将当前目录中以axis-2开头、以.jar结尾的所有文件复制到目标目录~/MyDirectory中。

我第一次尝试

代码语言:javascript
复制
cp '^axis2.*jar..。但是当我尝试这样做时,cp输出一个“没有这样的文件或目录”错误消息。我不确定我是否可以在cp中使用正则表达式。我也有一段时间没有使用正则表达式了,我的语法可能会关闭。有没有人对如何处理这件事有任何建议? ~/MyDirectory

..。但是当我尝试这样做时,cp输出一个“没有这样的文件或目录”错误消息。我不确定我是否可以在cp中使用正则表达式。我也有一段时间没有使用正则表达式了,我的语法可能会关闭。

有没有人对如何处理这件事有任何建议?

EN

回答 4

Unix & Linux用户

回答已采纳

发布于 2011-11-09 05:14:04

Linux/UNIX系统上的shell使用全球模式,而不是正则表达式。因此,如果要匹配以axis2开头并以.jar结尾的文件名,可以使用:

代码语言:javascript
复制
cp axis2*.jar /destination/directory
票数 24
EN

Unix & Linux用户

发布于 2011-11-09 08:11:36

如果您有GNU find和GNU cp可用,您可以使用正则表达式,如下所示:

代码语言:javascript
复制
find . -maxdepth 1 -regextype posix-basic -regex '.*/axis2[^/]*jar如果无论是glob模式还是bash扩展glob模式套件,您都需要这样做,这是非常方便的。 \
       -exec cp -t ~/MyDirectory {} +

如果无论是glob模式还是bash扩展glob模式套件,您都需要这样做,这是非常方便的。

票数 16
EN

Unix & Linux用户

发布于 2018-04-06 16:50:27

我非常喜欢rename perl脚本的regex语法(由Robin和Larry编写),例如:

rename "s/OldFile/NewFile/" OldFile* OldFile.cOldFile.h分别重命名为NewFile.cNewFile.h

我只想要与复制命令完全相同的东西:

copy "s/OldFile/NewFile/" OldFile*

因此,我复制了该脚本,并将重命名语句更改为通过File::Copy复制。看哪!具有perl-regex语法的复制命令:jcward/副本

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/24242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档