shell 使用Bash Python或Linux命令重命名文件

1mrurvl1  于 2022-11-16  发布在  Shell
关注(0)|答案(2)|浏览(107)

我有一个文件目录,我需要标准化这些文件的名称。
audio_32.mp4.mp4这样的文件名,我想改成audio_0-32.mp4。也就是说,我想在下划线后面加上一个零,然后再加上一个连字符。文件名中的数字不同。也就是说,还有一个名为audio_33.mp4.mp4的文件等等。我希望所有其他文件和模式保持不变。如果将去除尾部.mp4和添加零作为单独的任务来处理,则是可以的。
我如何才能有效地做到这一点?

7tofc5zh

7tofc5zh1#

在纯bash中执行此操作:

for f in *.mp4; do
   t="${f%.mp4}"
   echo mv "$f" "${t/_/_0-}"
done

对输出结果满意后,删除mv之前的echo以重命名文件,而不是打印mv命令。

1rhkuytd

1rhkuytd2#

您的代码将在哪个操作系统上运行?已经有很多工具可以处理这类问题,所以您在这里进入了重新发明轮子的领域。
例如Powertoys PowerRename就是为此而设计的。
也就是说,如果我假设典型的GNU工具集是可用的,你可以用“basename”来去掉mp4:

[user@host]$ basename audio_33.mp4.mp4 .mp4
audio_33.mp4
[user@host]$

剩下的可以通过基本的字符串操作来完成:

[user@host]$ X=audio_33.mp4
[user@host]$ echo ${X/audio_/audio_0-}
audio_0-33.mp4
[user@host]$

相关问题