首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动具有日期编码名称的文件集

移动具有日期编码名称的文件集
EN

Stack Overflow用户
提问于 2012-07-30 07:03:10
回答 2查看 142关注 0票数 3

我有一组文件,其中有日期。

让我们称它们为:

代码语言:javascript
复制
 a20120528_120001.log
 b20120528_120003.log
 (name)(year)(month)(day)_(hour)(minute)(second).log

同时移动这两个文件非常容易,只需执行以下操作:

代码语言:javascript
复制
 mv *20120528_12* file/

但现在我有一种情况,我想在同一天移动几个小时的文件,即:

代码语言:javascript
复制
 a20120528_120001.log
 b20120528_120003.log
 a20120528_130001.log
 b20120528_130003.log
 a20120528_140001.log
 b20120528_140003.log

现在,如果我想转移所有人,我可以只做一天:

代码语言:javascript
复制
 mv *20120528* file/

但是,如果我只想移动12小时和13小时,但不想移动14小时,我该怎么办?

请注意,这将需要足够的通用,我可以输入的日期,因为这将扩展到跨多天使用,其中有24个日志每天和几个(3-8之间)将被排除在每天。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-30 07:13:40

您可以使用范围:

代码语言:javascript
复制
mv *20120528_1[23]* file/

要排除从3到8的所有内容,请使用稍微复杂的:

代码语言:javascript
复制
mv *20120528_{0[0-29],[12]*}*

  • [0-29]分解到范围9.
  • {A,B}B.

扩展到0-2A

票数 1
EN

Stack Overflow用户

发布于 2012-07-30 07:14:19

这是一个很好的问题,因为在Bash中,文件名扩展只使用*?[。因此,您只能使用以下内容来处理12小时和13小时:

代码语言:javascript
复制
[ab]20??????_1[23]????.log

请注意,这只会将您带到2099年;如果您对此感到困扰,请进行相应的调整。

但是,如果您需要一个通用值范围,则需要多个命令。如果您有00到23小时,而您想要排除03到08,我认为您将需要以下内容:

代码语言:javascript
复制
[ab]20??????_0[0129]????.log
[ab]20??????_1?????.log
[ab]20??????_2[0123]????.log

当然,您也可以编写一个脚本来生成适当的模式,使用比filename globbing更复杂的东西。不过,我不确定您是否需要那么复杂。

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

https://stackoverflow.com/questions/11713721

复制
相关文章

相似问题

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