shell 读取 2024-0921-101541 时间戳
时间: 2024-10-01 21:06:33 浏览: 9
在shell脚本中,如果你有一个时间戳字符串 "2024-09-21-101541",它通常表示的是一个日期时间格式,但在Unix/Linux系统中,bash shell默认处理的是按数字秒数的时间戳(例如1689759941)。如果你想直接读取这种格式的时间,你需要先转换它。
你可以使用`date`命令将这种格式转换为shell能识别的格式,然后进一步解析。以下是一个例子:
```sh
timestamp="2024-09-21-101541"
datetime=$(echo "$timestamp" | awk -F '-' '{printf "%s", $3*3600+$2*60+$1}')
echo "时间戳(秒): $datetime"
```
这里,`awk`命令用于根据'-'分隔符提取出年、月、日和小时分钟秒,并将它们组合成Unix时间戳格式(秒数)。
如果你想得到更详细的日期和时间信息,可以这样做:
```sh
formatted_date=$(date -d @$datetime "+%Y-%m-%d %H:%M:%S")
echo "格式化后的日期和时间: $formatted_date"
```
相关问题
用shell写一段每天按照文本文件中规定的内容备份到指定位置加入时间戳并删除3天前数据
这是一段可以在 shell 中使用的代码,用来每天根据文本文件中的规定内容进行备份,并在备份文件名中加入时间戳,并删除3天前的备份数据。
```
#!/bin/bash
# 获取当前日期
today=$(date +%Y%m%d)
# 读取文本文件中的内容,并进行备份
while read line
do
# 在文件名中加入时间戳
filename="${line}_${today}.bak"
cp $line $filename
done < filelist.txt
# 删除3天前的备份文件
find . -name "*.bak" -mtime +3 -exec rm {} \;
```
说明:
- `filelist.txt` 文件中的每一行为需要备份的文件的路径。
- `cp` 命令用于备份文件。
- `find` 命令用于查找文件,`-name "*.bak"` 表示查找扩展名为 `.bak` 的文件,`-mtime +3` 表示查找修改时间超过3天的文件,`-exec rm {} \;` 表示执行删除操作。