bash - 保持9个字符不变并重命名文件夹中的所有文件
问题描述
我是 Bash 的新手,并尝试重命名文件夹中的文件,保持前 9 个字符完整并删除之后的任何内容。
abc123456olda.jpg > abc123456.jpg
我写了这个;
for file in *
do
echo mv "$file" `echo "$file" | sed -e 's/(.{9}).*(\.jpg)$/$1$2/' *.jpg
done
没有让它工作。有人可以指导我做错了什么吗?
解决方案
你不远了,试试这个:
for file in *.jpg; do
echo mv "$file" "$(echo "$file" | sed -E -e 's/(.{9}).*(\.jpg)$/\1\2/')"
done
有一些更正。一个重要的是$1$2
应该是\1\2
,并且您需要-E
标志来 sed 以便它理解带括号的分组。
一旦你看到命令没问题,echo
从第二行中删除,以便mv
实际执行。
推荐阅读
- r - Shiny conditionalPanel 的动画/过渡
- c# - 如何安全地覆盖方法
- python - 使用线程查找源和目标之间的所有路径
- python - 如何使用 python 的 pandas 和 numpy 库自动将数据存储在新行中
- php - 使用图像重置 php 会话\
- spring - 每个版本的 Spring REST 多个控制器文件
- php - 以 HTML 表格格式打印出勤报告
- javascript - Javascript 警告:“^”和“>>>”非混合运算符的意外混合
- python - 无法使用 Pandas 将多个语句链接在一起
- mysql - MySQL UPDATE 中复杂的 CASE 语句