unix - 带有日期前缀的unix中的大量文件重命名
问题描述
嗨,我需要对这样的文件进行大量重命名:
“Some Text Here 01 December 2019.pdf”转换成这种格式:“2019-12-01 Some Text Here.pdf”
“这里的一些文本”可能有不同的长度,并且在文件之间由不同的词组成。
我想修改为数字数据的文本我也想删除(“2019 年 12 月 1 日”)
如何对目录中具有这种格式的所有文件进行大规模重命名?
解决方案
regex='^\(.*\)\s\([0-9]\{2\}\s\w\+\s[0-9]\{4\}\)\(\.[^.]*\)$'
for old in *.pdf ; do
old_name=`echo "$old" | sed -e "s/$regex/\1\3/"`
date_string=`echo "$old" | sed -e "s/$regex/\2/"`
new="`date +'%Y-%m-%d' -d \"$date_string\"` $old_name"
mv -v "$old" "$new"
done
推荐阅读
- android - Android 将 rintone 设置为库中现有的一项
- javascript - 我如何导航到下面的课程
- javascript - 从服务文件发送的数据在 Reducer 状态中未更新
- scala - 为什么 scala self 类型不是其要求的子类型
- java - 加载 ApplicationContext 失败:在另一个测试类中使用 @TestConfiguration 将 bean 作为“headerProcessor”
- python - 二维均匀分布样本
- android - Android 正常布局在设备上的显示方式不同
- javascript - Ruby on Rails - 访问 Javascript 文件的数据库值
- javascript - 响应式中心导航栏
- c++ - SFINAE 和 sizeof 与 constexpr