我有一个包含文件的目录,需要标准化这些文件的名称。
像audio_32.mp4.mp4这样的名字,我想改为audio_0-32.mp4。也就是说,我想在下划线后面加一个零,然后引入连字符。这些文件因其名称中的数字而异。也就是说,还会有一个名为audio_33.mp4.mp4的文件,等等。我想让所有其他文件和模式保持不变。如果删除尾.mp4和添加零作为单独的任务处理,这是很好的。
我怎样才能有效地做到这一点?
发布于 2022-10-13 19:40:13
在纯粹的bash中这样做:
for f in *.mp4; do
t="${f%.mp4}"
echo mv "$f" "${t/_/_0-}"
done一旦您对输出感到满意,在echo之前删除mv来重命名文件,而不是打印mv命令。
发布于 2022-10-13 19:34:48
您的代码将在哪个操作系统上运行?已经有很多工具可以用来解决这类问题了,所以你要进入重新发明车轮的领域。
例如,Powertoys正是为此而设计的。
尽管如此,如果我假设典型的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]$ https://stackoverflow.com/questions/74060858
复制相似问题