在cp中使用正则表达式


11

这是一个简单的问题。我正在尝试将当前目录中所有以“ axis-2”开头并以“ .jar”结尾的文件复制到目标目录,假设它是〜/ MyDirectory。我首先想到的是尝试

cp '^axis2.*jar$' ~/MyDirectory

但这是行不通的。我什至不确定我可以在cp中使用正则表达式。一段时间以来,我还没有真正使用过正则表达式,我的语法可能完全不正确。当我尝试此cp时,只会输出“无此文件或目录”错误消息。有没有人对如何解决这个问题有任何建议?谢谢!

Answers:



7

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

find . -maxdepth 1 -regextype posix-basic -regex '.*/axis2[^/]*jar$' \
       -exec cp -t ~/MyDirectory {} +

如果glob模式和bash扩展glob模式都不满足您的需求,这可能会很方便。


0

我真的很喜欢renameperl脚本的正则表达式语法(由Robin Barker和Larry Wall编写),例如:

rename "s/OldFile/NewFile/" OldFile*

OldFile.cOldFile.h分别重命名为NewFile.cNewFile.h

我只是想要使用copy命令完全相同的东西:

copy "s/OldFile/NewFile/" OldFile*

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.