gpt4 book ai didi

linux - 目录名称 - 去除空格和其他格式

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:36 24 4
gpt4 key购买 nike

我是 bash 的新手,正在学习 sedawk 以及该平台提供的更多强大工具。在我的 linux 框中,我有一个包含子目录的音乐目录。这些子目录的名称大写。我正在尝试将该音乐目录中的所有文件夹设为小写并去除间距。除了不更改最后一个连字符之后的任何内容之外,除了在子目录名称中剥离一个空格。一个文件可能有很多连字符。我只是在考虑最后一个。我怎么能这样做?

while read -r file; do
new_file=$(echo "$file" | sed -re 's/^([^-]*)-\s*([^\.]*)/\L\1\E-\2/' -e 's/ /_/g' -e 's/_-/-/g')
if [ "$file" != "$new_file" ]; then
mv "$file" "$new_file"
fi
done

例如:

输入

New- Survivor - Eye Of The Tiger – 12wOlL

期望的结果:

new-survivor_-_ eye_of_the_tiger-12wOlL

当前结果:

new-Survivor_-_ Eye_of_The_Tiger-12wOlL

最佳答案

您可以使用此 sed 命令:

s='New- Survivor - Eye Of The Tiger - 12wOlL'
echo "$s" | sed 's/^\(.*\)\(-[^-]*\)$/\L\1\E\2/; s/ *- */-/; s/^\(.*\) \+- *\([^-]*\)$/\1-\2/; s/ /_/g'
new-survivor_-_eye_of_the_tiger-12wOlL

关于linux - 目录名称 - 去除空格和其他格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26353803/

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