SHELL脚本修改文件名移动到指定文件夹

现在我TEST文件夹下有ralph-config.xml.bbralph-log.cfg.bbralph-info.xml.bbbessie-config.xml.bbb... 现在我TEST文件夹下有
ralph-config.xml.bb
ralph-log.cfg.bb
ralph-info.xml.bb
bessie-config.xml.bb
bessie-log.cfg.bb
bessie-info.xml.bb
现在想写一个SHELL脚本把ralph-config.xml.bb、ralph-log.cfg.bb、ralph-info.xml.bb移动到home/test/ralph文件夹下,并且把前缀ralph-去掉。
bessie-config.xml.bb、bessie-log.cfg.bb、bessie-info.xml.bb移动到
home/test/bessie文件夹下,并且把前缀bessie-去掉。
哪位高手能帮帮解决下,谢谢了
谢谢大家这么快的回答
少了一个条件,还要把 ".bb"去掉,再在SHELL中加什么语句
展开
 我来答
七家生0D
2009-06-02 · TA获得超过1944个赞
知道小有建树答主
回答量:1675
采纳率:0%
帮助的人:1258万
展开全部
简单的写了一次, 思路如下,
脚本需要放在 test文件夹下
主要是用变量赋值分割文件名, 按照-的前后来分割

#################################
#!/bin/bash
mkdir 'ralph'
mkdir 'bessie'

for name in *.bb
do
newName=${name#*-}
q=${name%-*}
newName=${newName%.bb} #加上这句话就把.bb 删了
if [ $q = "ralph" ]; then
mv $name "ralph/$newName"
else
mv $name "bessie/$newName"
fi
done
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twfcc
2009-06-01 · TA获得超过722个赞
知道小有建树答主
回答量:415
采纳率:0%
帮助的人:502万
展开全部
#! /bin/bash
# need bash 3.1 0r above
path=TEST
newpath_1=/home/test/ralph
newpath_2=/home/test/bessie
if [ ! -d "$newpath_1 ] && [ ! -d "$newpath_2" ]
then
mkdir "$newpath_1" "$newpath_2"
fi
cd "$path" && echo "We are in $(pwd)"
for i in *
do
if [[ $i =~ (ralph-)([a-z]+.*) ]]
then
name=${BASH_REMATCH[2]}
mv "$i" "$name" ; ret=$?
if (( $ret == 0 )) ; then
mv "$name" "$newpath_1"
fi
else
mv "$i" "$newpath_2"
fi
done
exit 0
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式