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中加什么语句 展开
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中加什么语句 展开
展开全部
简单的写了一次, 思路如下,
脚本需要放在 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
脚本需要放在 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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#! /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
# 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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询