Shell 重命名文件的脚本
我正在尝试编写一个脚本,以批量重命名文件夹中的文件,如下所示: 文件名: LC PartA-PartB.pdf 将成为 LC PartB-PartA.pdf 所以基本上,在“-”之后的所有内容都应该在“-”之前,“-”前面的内容应该在“-”之后,除了前3个字符(“LC”)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*循环过滤部件?对不起。。。我知
有人吗?提前谢谢。我在阅读时用
查找find
查找与regexLC匹配的文件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