根据文件名中的时间戳值复制文件

时间:2016-04-15 08:49:37

标签: regex string bash

所有文件都驻留在一个文件夹中。文件名如下所示:

1695_6892_20160321000000_20160321235959.file.name.csv.gz

第三个子字符串(在第二个_之后)是一个时间戳。

如何将timestamp < 20150531000000的所有文件复制到另一个文件夹my_folder

3 个答案:

答案 0 :(得分:3)

试试这个:

for i in *.gz; do test `echo $i | cut -d _ -f 3` -lt 20150531000000 && cp $i my_folder; done

答案 1 :(得分:0)

而且......你可以使用awk。

for i in $(ls -1 org_folder | awk -F"_" '{ if ($3 < 20150531000000) print $0 }'); cp mv org_foler/$i my_folder/; done

答案 2 :(得分:-1)

ls | awk -F'_' '$3<20150531000000{print}' 应该是你要移动的文件,所以 for f in "$(ls|awk -F'_' '$3<20150531000000{print}')"; do mv "${f}" elsewhere/ ;done