我有一些文件在其名称中包含以下字符串:“20171011095942”,这是日期和时间“2017/10/11 09:59:42”。
text_text_20171011095937_155.DAT.gz
text_text_20171011095942_156.DAT.gz
我需要选择09小时开始的所有文件并将它们放在另一个文件夹中。如果我使用命令:
date -d '20171011095942' +'%R'
它说“无效日期”。如何将时间与该字符串分开,以便我可以只选择那些文件? 谢谢!
答案 0 :(得分:2)
使用查找 + mv 命令:
find . -type f -regextype posix-egrep -regex ".*_2017101109[0-9]{4}_.*\.gz" -exec mv {} dest_dir/ \;
在上面的命令中,将dest_dir
更改为"另一个文件夹" 。
.*_2017101109[0-9]{4}_.*\.gz
- 正则表达式模式,以匹配包含所需序列的所有文件名。
.*
- 匹配任何字符
_2017101109
- 匹配关键数字序列(<year><month><day><hours>
)
[0-9]{4}_
- 确保上述序列后跟4个数字,指向<minutes><seconds>
\.gz
- 确保文件扩展名为.gz