Shell 脚本初学小菜鸟请教高手!谢谢

时间:2020-12-19 19:29:57
各位高手大家好,我刚开始接触到Shell编程,一个好朋友给了我这样一道题目,

用shell编辑一个脚本,完成如下功能,对于一个文件夹下面的所有文件,对于有.dat结尾的,不变,
对于没有.dat结尾的,加一个.dat结尾

小弟初学此技术,一点思路都没有,苦恼不已,希望得到高手指点,我愿拜各位高手为师,彻底明白这道题,小弟先有礼了!

我的E-mail&MSN:zhengweiorg@hotmail.com

QQ:188921225

10 个解决方案

#1


#!/bin/sh

_fs=`ls`
for _f in ${_fs}; do
        echo ${_f} | grep -q ".\.dat$"
        if [ "$?" = "0" ]; then
                echo ${_f}
        else
                echo mv ${_f} ${_f}.dat
        fi
done

#2


ls |while read name
do
tmp=`echo $name|grep .sh`
if [ -z $tmp ]
then
newname=$name".sh"
mv $name $newname
fi
done

#3


简化一下二楼的方法

#!/bin/sh

_fs=`ls | grep -q ".\.dat$"`
for _f in ${_fs}
do
   mv ${_fs} ${_fs}.dat

done

#4


再简化一下吧:
find . -depth 1 -type f ! -name "*.dat" -exec echo {} {}.dat \;

#5


这个算不上简化, 也是种方法吧。
ls|grep -v *.dat | xargs -I '{}' mv  '{}' '{}'.dat

#6


赞楼上,学习了!

#7


学习了。

#8


qiang

#9


学习了

#10


高手们呀,加我的QQ 6663315
我想找个老师。谢谢你们啊。
帮我带进SHELL。谢谢加我啊`

#1


#!/bin/sh

_fs=`ls`
for _f in ${_fs}; do
        echo ${_f} | grep -q ".\.dat$"
        if [ "$?" = "0" ]; then
                echo ${_f}
        else
                echo mv ${_f} ${_f}.dat
        fi
done

#2


ls |while read name
do
tmp=`echo $name|grep .sh`
if [ -z $tmp ]
then
newname=$name".sh"
mv $name $newname
fi
done

#3


简化一下二楼的方法

#!/bin/sh

_fs=`ls | grep -q ".\.dat$"`
for _f in ${_fs}
do
   mv ${_fs} ${_fs}.dat

done

#4


再简化一下吧:
find . -depth 1 -type f ! -name "*.dat" -exec echo {} {}.dat \;

#5


这个算不上简化, 也是种方法吧。
ls|grep -v *.dat | xargs -I '{}' mv  '{}' '{}'.dat

#6


赞楼上,学习了!

#7


学习了。

#8


qiang

#9


学习了

#10


高手们呀,加我的QQ 6663315
我想找个老师。谢谢你们啊。
帮我带进SHELL。谢谢加我啊`