gpt4 book ai didi

bash - 删除目录中所有文件名中最后一个带括号的字符串

转载 作者:行者123 更新时间:2023-12-05 01:54:48 41 4
gpt4 key购买 nike

我有很多歌曲文件要重命名。我试图删除所有歌曲文件名中最后一次出现的带括号的字符串。例如,它们的格式如下:song - artist (foo) (bar) (text I want to remove).mp3,但我希望输出为 song - artist (foo ) (bar).mp3.

目前,我发现了一个 zsh 命令,它可以删除所有带括号的字符串,如这篇文章的答案中所示 Renaming files to remove parenthesized strings .

该帖子中几乎对我有用的解决方案是使用此命令:

autoload zmv # best in ~/.zshrc
zmv -n '*' '${f//[[:space:]]#[(]*[)]}'

但是,这会删除所有文件名中的所有 括号内的字符串。我只是想删除文件名中带括号的字符串的最后 出现。

最佳答案

您可以使用 Bash 的贪婪正则表达式:

#!/bin/bash

re='(.*)(\([^)]*\))(.*)'

for file in *; do
if [[ $file =~ $re ]]; then
echo mv -i -- "$file" "${BASH_REMATCH[1]}${BASH_REMATCH[3]-}"
fi
done

文件名扩展需要改进。

关于bash - 删除目录中所有文件名中最后一个带括号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70530823/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com