Shell 重命名文件的脚本

Shell 重命名文件的脚本,shell,file,rename,Shell,File,Rename,我正在尝试编写一个脚本,以批量重命名文件夹中的文件,如下所示: 文件名: LC PartA-PartB.pdf 将成为 LC PartB-PartA.pdf 所以基本上,在“-”之后的所有内容都应该在“-”之前,“-”前面的内容应该在“-”之后,除了前3个字符(“LC”) 有人吗?提前谢谢。我在阅读时用查找find查找与regexLC匹配的文件Stackoverflow不是编码服务。你试过什么?为什么您的案例重命名失败?使用带有mv和'sed的简单for i in*循环过滤部件?对不起。。。我知

我正在尝试编写一个脚本,以批量重命名文件夹中的文件,如下所示:

文件名: LC PartA-PartB.pdf

将成为 LC PartB-PartA.pdf

所以基本上,在“-”之后的所有内容都应该在“-”之前,“-”前面的内容应该在“-”之后,除了前3个字符(“LC”)


有人吗?提前谢谢。

我在阅读时用
查找
find
查找与regex
LC

匹配的文件Stackoverflow不是编码服务。你试过什么?为什么您的案例
重命名
失败?使用带有
mv
和'sed的简单
for i in*
循环过滤部件?对不起。。。我知道我必须用
for I in*
mv
,但我不知道如何使用
sed
当然!从学习正则表达式中获得乐趣
find . -type f -regex '\./LC .* - .*\.pdf' |
while IFS= read -r file; do
    newfile=$(echo "$file" | sed 's/LC \(.*\) - \(.*\)\.pdf/LC \2 - \1 .pdf/')
    mv -v "$file" "$newfile"
done
for file in "LC "*" - "*".pdf"; do
    newfile=$(echo "$file" | sed 's/LC \(.*\) - \(.*\)\.pdf/LC \2 - \1 .pdf/')
    mv -v "$file" "$newfile"
done