我想用UTC时间戳重命名我的文件。当前,这些文件是基于本地时间(CET)的名称,如下所示,其中第一个数字是时间戳:
DataExport.test_20181029183500_300.csv.gz
由于某种原因,我无法在文件源本身上解决此问题,因此以后必须进行更改。
目前,我提取的号码如下:
echo "DataExport.test_20181029183500_300.csv.gz" | cut -d"_" -f2- | cut -c1-14
但是现在我被困在这里,如何继续。
感谢您和最诚挚的问候
答案 0 :(得分:1)
将此作为您代码的延续
date -d "$( echo "DataExport.test_20181029183500_300.csv.gz" | cut -d'_' -f2 | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1-\2-\3 \4:\5:\6/g' )" +%s
哪个会输出:
1540809300
然后,您可以使用该行的输出来重命名文件。但是我建议为这个问题创建一个函数或一个实际脚本是否变得复杂。
这是一个快速的功能,可以做到这一点:
function rename_ts() {
filename="$1"
time_stamp=$(echo "$filename" | cut -d'_' -f2)
date_fmt=$(echo "$time_stamp" | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1-\2-\3 \4:\5:\6/g')
utc=$(date -d "$date_fmt" +%s)
mv $filename $(echo "$filename" | sed "s/$time_stamp/$utc/g")
}
例如rename_ts DataExport.test_20181029183500_300.csv.gz