【问题标题】:Loop over filenames, rename them via a condition循环文件名,通过条件重命名它们
【发布时间】:2019-06-06 11:15:24
【问题描述】:

如何循环访问单独的文件名并重命名它们? “任务/条件”是: 剪掉前5个字母和后4个字母?

例如我有这些文件:

1212erertugg.jpg
14rtzuzuiopo.jpg
tz7878nhmnop.jpg
etc...

结果应该是这样的:

rertugg
uzuiopo
8nhmnop

【问题讨论】:

  • 您尝试了什么,又是如何失败的?
  • 你坚持哪一部分?循环文件、提取子字符串或重命名它们?
  • 我坚持:“提取子字符串”

标签: bash for-loop filenames


【解决方案1】:

使用参数扩展来提取子字符串:

#!/bin/bash
for file in 1212erertugg.jpg 14rtzuzuiopo.jpg tz7878nhmnop.jpg ; do
    substr=${file:5}
    substr=${substr:0:-4}
    mv "$file" "$substr"
done

您可能需要检查您是否没有覆盖已经存在的文件,无论是原始文件还是由脚本本身在前面的步骤之一中创建的。

【讨论】:

  • @EdMorton:已修复(部分):-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2021-02-14
相关资源
最近更新 更多