LINUX批量修改带时间戳的文件,保留时间戳。
时间: 2024-09-07 16:00:20 浏览: 48
带时间戳的Ping+文件保存记录
在Linux系统中,批量修改文件名并保留时间戳可以通过组合使用shell命令来实现。一个常用的命令是`rename`,不过这个命令在不同的Linux发行版中可能有所不同,比如在某些系统中它是`prename`。此外,`mv`命令也可以用来重命名文件,但是它本身不支持批量重命名和保留时间戳的功能。这里,我将提供一个使用`rename`命令的例子来说明如何批量修改带时间戳的文件名。
如果你的系统中安装了`rename`命令,你可以使用如下脚本来批量修改文件名。这个例子假设你想要将文件名中的日期格式从`YYYYMMDD`更改为`DDMMYYYY`,但保留文件的原始时间戳:
```bash
# 首先找到所有符合特定模式的文件
find . -type f -name "*????????*" | while read oldname; do
# 提取原始文件的修改时间戳
oldtime=$(date -r "$oldname" +%s)
# 使用rename命令更改文件名格式
# 这里假设原始文件名为20230321_sample.txt,我们将其改为21032023_sample.txt
newname=$(echo $oldname | sed 's/\(.*\)....\(.*\)\./\2\1./')
rename "$oldname" "$newname"
# 更改文件时间戳以匹配原始文件
touch -t "@$oldtime" "$newname"
done
```
请注意,上面脚本中的`sed`命令是基于文件名的特定格式进行的简单替换,如果你的文件名格式不同,需要相应地修改正则表达式。此外,`touch`命令用于设置文件的时间戳,`-t`参数后跟的是时间戳。
在执行这类操作之前,建议先在一个小的文件集上测试脚本,以确保它按照预期工作,并且不会导致数据丢失。
阅读全文