gpt4 book ai didi

linux - 如何使用 bash 交换文件名中的前 2 个单词

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:14 24 4
gpt4 key购买 nike

脚本编写新手,只想交换目录中所有文件名的前 2 个单词,如下所示:

来自

A-B-Model-011818.xml
X-Y-Model-011818.xml

B_A-Model-011818.xml
Y_X-Model-011818.xml

我从基本的 awk 函数开始,得到了想要的输出

echo "A-B-Model-011818.xml" | awk -F'[-.]' '{print $2"_"$1"-"$3"-"$4".xml"}'

但是在 bash 中应用此技术(使用 for 循环以确保我找到所有 .xml 文件并重命名文件)没有帮助。

#!/usr/bin/env bash

cd Current_Directory

for FILE in *.xml; do
# NEWNAME = $(awk -F'[-.]' '{print $2"_"$1"-"$3"-"$4".xml"}')
NEWNAME = sed 's/\(.\)-\(.\)/\2_\1/'
mv "$FILE" "$NEWNAME"
done

不确定这是否是在循环中使用 sed 或 awk 函数的正确方法。

最佳答案

使用 prename(Perl 重命名)命令:

prename -n 's/^([A-Z])-([A-Z])(-.*\.xml)/$2-$1$3/' *.xml

(确保过程按要求进行后删除-n选项)

关于linux - 如何使用 bash 交换文件名中的前 2 个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48336452/

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