首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Bash或Linux命令重命名文件

问使用Bash或Linux命令重命名文件
EN

Stack Overflow用户
提问于 2022-10-13 19:26:52
回答 2查看 41关注 0票数 0

我有一个包含文件的目录,需要标准化这些文件的名称。

像audio_32.mp4.mp4这样的名字,我想改为audio_0-32.mp4。也就是说,我想在下划线后面加一个零,然后引入连字符。这些文件因其名称中的数字而异。也就是说,还会有一个名为audio_33.mp4.mp4的文件,等等。我想让所有其他文件和模式保持不变。如果删除尾.mp4和添加零作为单独的任务处理,这是很好的。

我怎样才能有效地做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-13 19:40:13

在纯粹的bash中这样做:

代码语言:javascript
复制
for f in *.mp4; do
   t="${f%.mp4}"
   echo mv "$f" "${t/_/_0-}"
done

一旦您对输出感到满意,在echo之前删除mv来重命名文件,而不是打印mv命令。

票数 1
EN

Stack Overflow用户

发布于 2022-10-13 19:34:48

您的代码将在哪个操作系统上运行?已经有很多工具可以用来解决这类问题了,所以你要进入重新发明车轮的领域。

例如,Powertoys正是为此而设计的。

尽管如此,如果我假设典型的GNU工具集是可用的,那么您可以使用“basename”来去除mp4:

代码语言:javascript
复制
[user@host]$ basename audio_33.mp4.mp4 .mp4
audio_33.mp4
[user@host]$

剩下的操作可以使用基本的字符串操作:

代码语言:javascript
复制
[user@host]$ X=audio_33.mp4
[user@host]$ echo ${X/audio_/audio_0-}
audio_0-33.mp4
[user@host]$ 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74060858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档