#!/bin/sh
source /etc/profile
if [ ! -d /yuki ];
then
mkdir -p /yuki
fi
for num in `seq 1 5`
do
touch /yuki/stu_102999_${num}_finished.jpg
done
2)用for循环实现将以上文件名中的_finished去掉。
解答:
方法1:
#!/bin/sh
source /etc/profile
cd /yuki
for num in `seq 1 5`
do
mv /yuki/stu_102999_${num}_finished.jpg /yuki/stu_102999_${num}.jpg
done
#此方法属于投机取巧的方法,不推荐。
方法2:
#!/bin/sh
source /etc/profile
cd /yuki
for file in `ls ./*.jpg`
do
mv ${file} `echo ${file} | sed 's#_finished##g' `
done
方法3:
#!/bin/sh
source /etc/profile
cd /yuki
for file in `ls ./*.jpg`
do
mv ${file} `echo ${file} | sed 's#\(stu_102999_\)\(.*\)\(.jpg\)#\1\2\3#g'`
done
#此方法可读性并不是很强,不推荐。也许是我自己写得还不够精简~
方法4:
#!/bin/sh
source /etc/profile
cd /yuki
for file in `ls ./*.jpg`
do
mv ${file} `echo ${file%_finished*}.jpg`
done
#这里就是变量的截取新方法,推荐使用。
方法5:
#!/bin/sh
source /etc/profile
cd /yuki
for file in `ls ./*.jpg`
do
mv ${file} `echo ${file} | cut -d -f1 | awk -F '_finished' '{print $1}'.jpg`
done