请教下 bash 脚本如何满足这种场景下的重命名

2022-02-28 23:07:26 +08:00
 tyhunter
场景如下:当前存在一些文件需要用多个指定值替换掉多个匹配值
(如 xxx_A 重命名为 xxx-e01 ,xxx_B 重命名为 xxx_e02 ,分别对应的关系),想到了 sed 命令,但是发现无法执行

from_folder=/root/test ###原文件夹路径
new_folder=/root/new ###新文件夹路径

for file in $(find $from_folder) ###列出所有文件包含路径
do
[[ -d $file ]] && continue ###判断是否为文件夹
if [[ -e ${file##*/} ]];then ###判断是否存在重名文件
mv $file $(echo $file | sed 's/\//_/g') ####如果是重名,在名字前加入路径
else
newfile='echo $file | sed 's/_A/-e01/;s/_B/-e02/;s/_C/-e03/;s/_D/-e04/;'
mv $file $newfile ###重命名文件
mv $newfile $new_folder
fi
done

但执行的时候报错了,提示 mv: target 's/_A/-e01/' is not a directory ,小白搞不清楚是哪里赋值传递出错了,还请 bash 大佬指点一下
529 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX