将时间戳字符串转换为 bash 中的 UTC 日期
Convert timestamp string to UTC date in bash
我想用 UTC 时间戳重命名我的文件。目前这些文件是基于本地时间 (CET) 的名称,如下所示,其中第一个数字是时间戳:
DataExport.test_20181029183500_300.csv.gz
由于某种原因我无法在文件源本身修复它,所以我必须稍后执行更改。
目前我提取的号码如下:
echo "DataExport.test_20181029183500_300.csv.gz" | cut -d"_" -f2- | cut -c1-14
但是现在卡在这里了,怎么继续。
谢谢你和最好的问候
将此作为代码的延续进行检查
date -d "$( echo "DataExport.test_20181029183500_300.csv.gz" | cut -d'_' -f2 | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/-- ::/g' )" +%s
将输出:
1540809300
然后您可以使用该行的输出来执行文件重命名。但我建议,如果只创建一个函数或一个实际的脚本就很复杂。
这里有一个快速函数可以做到这一点:
function rename_ts() {
filename=""
time_stamp=$(echo "$filename" | cut -d'_' -f2)
date_fmt=$(echo "$time_stamp" | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/-- ::/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
我想用 UTC 时间戳重命名我的文件。目前这些文件是基于本地时间 (CET) 的名称,如下所示,其中第一个数字是时间戳:
DataExport.test_20181029183500_300.csv.gz
由于某种原因我无法在文件源本身修复它,所以我必须稍后执行更改。
目前我提取的号码如下:
echo "DataExport.test_20181029183500_300.csv.gz" | cut -d"_" -f2- | cut -c1-14
但是现在卡在这里了,怎么继续。
谢谢你和最好的问候
将此作为代码的延续进行检查
date -d "$( echo "DataExport.test_20181029183500_300.csv.gz" | cut -d'_' -f2 | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/-- ::/g' )" +%s
将输出:
1540809300
然后您可以使用该行的输出来执行文件重命名。但我建议,如果只创建一个函数或一个实际的脚本就很复杂。
这里有一个快速函数可以做到这一点:
function rename_ts() {
filename=""
time_stamp=$(echo "$filename" | cut -d'_' -f2)
date_fmt=$(echo "$time_stamp" | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/-- ::/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