在 Ubuntu(Linux)下,“时间戳批量处理”通常是指 把一批时间字符串 ↔ Unix 时间戳互转,或 对日志/文件中的时间戳做批量替换、格式化。下面按常见场景给你几种实用方法。
date -d "2024-01-15 10:30:00" +%s
假设 times.txt 内容:
2024-01-15 10:30:00
2024-02-01 08:00:00
while read t; do
date -d "$t" +%s
done < times.txt
或一行:
cat times.txt | xargs -I{} date -d {} +%s
date -d @1705295400
while read ts; do
date -d "@$ts" "+%Y-%m-%d %H:%M:%S"
done < ts.txt
sed -E 's/([0-9]{10})/date -d @\1 "+%Y-%m-%d %H:%M:%S"/ge' log.txt
⚠️ 注意:-e 的 e 标志会执行命令,谨慎使用。
更安全的做法(awk):
awk '{
while (match($0, /[0-9]{10}/)) {
ts = substr($0, RSTART, RLENGTH)
cmd = "date -d @" ts " \"+%Y-%m-%d %H:%M:%S\""
cmd | getline dt
close(cmd)
$0 = substr($0,1,RSTART-1) dt substr($0,RSTART+RLENGTH)
}
print
}' log.txt
touch *.log
for f in *.log; do
touch -d "2024-01-01 00:00:00" "$f"
done
from datetime import datetime
with open("times.txt") as f:
for line in f:
t = line.strip()
ts = int(datetime.strptime(t, "%Y-%m-%d %H:%M:%S").timestamp())
print(ts)
反向:
datetime.fromtimestamp(1705295400)
| 含义 | 格式 |
|---|---|
| 秒级时间戳 | %s |
| 毫秒时间戳 | $(date +%s%3N) |
| 自定义格式 | +%Y-%m-%d %H:%M:%S |
如果你能具体说一下:
我可以直接给你一条可用命令或脚本。