如何从 Linux/Unix 中的文件名中删除 HHMMSS?

如何从 Linux/Unix 中的文件名中删除 HHMMSS?

我有一个文件名 mahelipaul_YYYYMMDDHHMMSS,我需要从文件中删除 HHMMSS 部分并将其分配给一个新变量。

我需要 mahelipaul_YYYYMMDD 格式的文件。我该怎么做?

答案1

最直接的

filename=mahelipaul_20201231235959
echo mv "$filename" "${filename%??????}"     # remove the last 6 characters

如果看起来正确则删除回声。

可以做更复杂的事情来验证后缀是否为 14 位数字,并确保这些数字代表有效的时间戳。

答案2

使用 Bash,您可以使用“切片”从字符串中截取多个字符。听起来您想删除最后 6 个字符,可以这样做:(这只是 Glenn 的答案中的另一种方法)

$ filename=mahelipaul_20201231235959
$ echo "${filename::-6}"     # remove the last 6 characters
mahelipaul_20201231

如果您想要相反的操作(仅保留最后 6 个字符,则如下所示:

$ filename=mahelipaul_20201231235959
$ echo "${filename:(-6)}"    # keep only the last 6 characters
235959

请注意,我“只是”分配一个变量并打印新变量。您需要使用这些修改后的变量来创建新变量、文件或您实际想要执行的任何操作。

我发现这个Bash 参考真的很有用。

相关内容