Linux:在两个日期之间复制文件名中带有日期的文件

亨里克·尼尔森(Henrik Nielsen)

我有一个充满文件的文件夹,我有时需要在其中将这些文件的子集复制到其他地方进行处理。

文件在文件名(即filename_20131028.txt)中具有创建日期。

如何在两个日期之间选择和复制文件。理想情况下,我想制作一个类似于“ get_my_foo_files.sh 20131010 20131025”的脚本,并获取10月10日至10月25日之间的文件。

提前致谢。

编辑:我也开放使用Python / Perl的解决方案。

斯普雷蒂奇先生

使用GNU,date您可以轻松遍历一系列YYYYMMDD格式的日期:

#!/usr/bin/bash
first=$1
last=$2

while [[ $first -le $last ]]; do
    match=$(date +%Y%m%d  -d $first)
    echo "filename_${match}.txt"
    first=$(date +%Y%m%d -d "$first 1 day")
done 

添加您的处理而不是echo ...这使用日期算术,其中“ n day”是给定日期的天数加法,“-n day”也可用于减法(尽管如果同时存在HH:MM,请注意此Beartrap)。

(如果您遇到过,古老的datesh-utils时代)版本允许使用mktime()规范化功能,您可以简单地将每月的每日增量增加到99,然后它将为您静默修复:

 $ date -d 20160832
 Thu Sep  1 00:00:00 IST 2016

非常类似的东西(但可以说在行为上不相同),也可以用文件系统的时间戳来完成使用GNUfind和修改时间相关的选项(-mtime-daystart等等)。

一个可能有用的变化是使用bash的扩展globlob(通过@(pattern)),以便您可以一次性处理所有文件:

#!/usr/bin/bash
first=$1
last=$2

globlist=$1
while [[ $first -le $last ]]; do
    first=$(date +%Y%m%d -d "$first 1 day")
    globlist="${globlist}|${first}"
done 

shopt -s nullglob extglob
filelist="$(echo filename_@($globlist).txt)"  # NB whitespace in filenames
echo "filelist is: $filelist"

filearr=( filename_@($globlist).txt )  # safer for troublesome names
declare -p filearr

这也进行设置,nullglob以使零匹配导致空字符串而不是错误。当最好对多个文件(例如tarrsync执行单个操作时,此功能很有用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在php文件中显示两个给定日期之间的所有日期

来自分类Dev

在两个日期之间获取文件

来自分类Dev

在目录中搜索在两个日期之间创建的文件

来自分类Dev

根据文件名中的日期复制文件

来自分类Dev

Shell命令获取PHP中两个日期之间的所有文件?

来自分类Dev

在已保存日期的两个日期之间提取文件

来自分类Dev

将文件名中带有日期的文件移动到目录中

来自分类Dev

Python:给定两个文件名列表,它们根据日期部分找到通用的文件名

来自分类Dev

批量下载文件名中带有日期的文件

来自分类Dev

在Linux中找到两个文件夹日期之间的文件?

来自分类Dev

少于3个月前的Linux tar文件,使用文件名中的日期

来自分类Dev

带有子查询的两个日期之间的差异

来自分类Dev

复制最新的两个文件并附加日期

来自分类Dev

获取带有两个“。”的文件名。并按目录汇总?

来自分类Dev

在Windows上的备份文件名中带有日期和时间的mysqldump

来自分类Dev

在Windows上的备份文件名中带有日期和时间的mysqldump

来自分类Dev

两个CSV文件之间的日期之间的差异基于熊猫中的唯一编号

来自分类Dev

查找使用php在两个日期之间修改的文件

来自分类Dev

在两个日期之间读取日志文件

来自分类Dev

查找使用php在两个日期之间修改的文件

来自分类Dev

difflib具有两个以上的文件名

来自分类Dev

difflib有两个以上的文件名

来自分类Dev

带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

来自分类Dev

带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

来自分类Dev

Eclipse中带有日历的两个日期之间的天数

来自分类Dev

在带有小时计数的sql oracle中的两个日期之间进行选择?

来自分类Dev

在现有文件名中添加日期

来自分类Dev

比较两个目录中的文件名

来自分类Dev

复制一个以今天日期为文件名(YYMMDD)的txt文件

Related 相关文章

  1. 1

    在php文件中显示两个给定日期之间的所有日期

  2. 2

    在两个日期之间获取文件

  3. 3

    在目录中搜索在两个日期之间创建的文件

  4. 4

    根据文件名中的日期复制文件

  5. 5

    Shell命令获取PHP中两个日期之间的所有文件?

  6. 6

    在已保存日期的两个日期之间提取文件

  7. 7

    将文件名中带有日期的文件移动到目录中

  8. 8

    Python:给定两个文件名列表,它们根据日期部分找到通用的文件名

  9. 9

    批量下载文件名中带有日期的文件

  10. 10

    在Linux中找到两个文件夹日期之间的文件?

  11. 11

    少于3个月前的Linux tar文件,使用文件名中的日期

  12. 12

    带有子查询的两个日期之间的差异

  13. 13

    复制最新的两个文件并附加日期

  14. 14

    获取带有两个“。”的文件名。并按目录汇总?

  15. 15

    在Windows上的备份文件名中带有日期和时间的mysqldump

  16. 16

    在Windows上的备份文件名中带有日期和时间的mysqldump

  17. 17

    两个CSV文件之间的日期之间的差异基于熊猫中的唯一编号

  18. 18

    查找使用php在两个日期之间修改的文件

  19. 19

    在两个日期之间读取日志文件

  20. 20

    查找使用php在两个日期之间修改的文件

  21. 21

    difflib具有两个以上的文件名

  22. 22

    difflib有两个以上的文件名

  23. 23

    带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

  24. 24

    带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

  25. 25

    Eclipse中带有日历的两个日期之间的天数

  26. 26

    在带有小时计数的sql oracle中的两个日期之间进行选择?

  27. 27

    在现有文件名中添加日期

  28. 28

    比较两个目录中的文件名

  29. 29

    复制一个以今天日期为文件名(YYMMDD)的txt文件

热门标签

归档