如何替换一组文件名中的字符?

如何替换一组文件名中的字符?

我有一组这样的图像:

01-12_13:20:12_1366x768.png  01-12_13:20:46_1366x768.png  01-12_13:21:01_1366x768.png  01-12_13:21:06_1366x768.png
01-12_13:20:40_1366x768.png  01-12_13:20:47_1366x768.png  01-12_13:21:02_1366x768.png  01-12_13:21:07_1366x768.png
01-12_13:20:42_1366x768.png  01-12_13:20:49_1366x768.png  01-12_13:21:03_1366x768.png  01-12_13:21:08_1366x768.png
01-12_13:20:44_1366x768.png  01-12_13:20:59_1366x768.png  01-12_13:21:04_1366x768.png  01-12_13:21:10_1366x768.png
01-12_13:20:45_1366x768.png  01-12_13:21:00_1366x768.png  01-12_13:21:05_1366x768.png

我需要将每个替换:_.我怎样才能使用 bash 命令做到这一点?

(note : i love when everything is compact and one-lined)

答案1

您可以使用简单的 for 循环、glob 和参数扩展来实现此目的:

for f in *:*.png; do mv -- "$f" "${f//:/_}"; done

答案2

for 循环是一种可能的解决方案,但我更喜欢rename

rename "s/:/_/g" *

该工具根据给定的正则表达式规则重命名多个文件。

相关内容