首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据文件名中的时间戳复制一系列文件?

如何根据文件名中的时间戳复制一系列文件?
EN

Stack Overflow用户
提问于 2019-11-24 15:27:43
回答 2查看 749关注 0票数 0

操作系统是Raspberian。

根据文件名中的时间戳和从目录A到目录B的标签,我试图复制所选的文件。

文件名的格式是:

固定文本:DCS-932L

  • The时间戳: YYYYMMDDhhmmssnn

  • Label _day_night_light_is_on

  • Fixed文本:.jpg

例如:

  • DCS-932L2019103013414701_day.jpg
  • DCS-932L2019111505255401_night.jpg
  • DCS-932L2019112319413501_light_is_on.jpg

如何在两个给定的时间戳之间复制特定范围的文件,如果可能的话,可以复制一个或多个给定的标签?

我认为这可以用findrsync与RegEx结合使用。但这件事太复杂了,我无法想象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-24 18:27:53

对于简单的时间范围,您可以使用bash的球体。您可能需要激活shopt -s nullglob

下面是一些例子:

代码语言:javascript
复制
cp  DCS-932L2019*.jpg          target/dir/  # range = "in 2019"
cp  DCS-932L201911*.jpg        target/dir/  # range = "in november 2019"
cp  DCS-932L2019110*.jpg       target/dir/  # range = "from 2019-11-01 to 2019-11-09"
cp  DCS-932L2019{04..12}*.jpg  target/dir/  # range = "from 2019-04-01 to 2019-12-31"

全球化也适用于标签。

代码语言:javascript
复制
DCS-932*_day.jpg                # all files with _day label
DCS-932L2019*{_day,_night}.jpg  # all files from 2019 with _day or _night label

对于任意范围,必须手动筛选文件。这可以用一个循环来完成。循环可以与球形结合,以加快处理速度,或者只选择一些标签。

代码语言:javascript
复制
prefix=DCS-932
for file in "$prefix"*.jpg; do
    withoutPrefix="${file/$prefix/}"
    timestamp="${withoutPrefix/_*/}"
    # replace YYYYM... with your range
    (( timestamp > YYYYMMDDhhmmss )) && 
    (( timestamp < YYYYMMDDhhmmss )) &&
    cp "$file" target/dir/
done
票数 1
EN

Stack Overflow用户

发布于 2019-11-24 20:32:17

如果文件数量很大,则通过并行处理和发出少量的“cp”调用来获得效率可能很重要。结合find/awk/xargs/cp:

代码语言:javascript
复制
from=...  # Timestamp ni YYYYMMDDhhmmss
to=...    # Timestamp in YYYYMMDDhhmmss
prefix=DCS-932
find . -name "${prefix}*.jpg" |
    awk -v "FROM=${prefix}${from}" -v TO="${prefix}${to}" '$1 > FROM && $1 < TO' |
    xargs -L50 cp -t target/dir

这将使用find定位文件,使用awk筛选,使用xargs对文件进行分组,以减少cp调用的数量。

理论上,可以并行运行副本(xargs、-P4等),但需要实际测试。

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

https://stackoverflow.com/questions/59019271

复制
相关文章

相似问题

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