工科小石头 2024-07-26 20:26 采纳率: 40%
浏览 3
已结题

关于没有成功修改扩展名,下面正确运行)后面发现是if判断的问题,上面这个if判断到底错在哪里!(相关搜索:家目录)

题目:批量修改家目录下的文件扩展名,使用位置参数传递两种扩展名,例如txt文件为csv

文件。(注:碰到特殊符号使用\进行转义)

这里想问一下两个代码的区别。(上面运行不对,没有成功修改扩展名,下面正确运行)
后面发现是if判断的问题,上面这个if判断到底错在哪里?


UpdateType()
{
ls /home > /root/updatefile.txt
sed "s/.$1/.$2/g" /root/updatefile.txt > /root/updatefile1.txt
count=1
for i in `ls /home`
do
    f=$(sed -n "$count p" /root/updatefile1.txt)
    echo $f
    if [ -f /home/$i -a -f /home/$f ] 
    then
    mv /home/$i /home/$f
    fi
    count=$(($count+1))
done
echo "重命名扩展名成功"
}


```bash
UpdateType()
{
ls /home > /root/updatefile.txt
sed "s/.$1/.$2/g" /root/updatefile.txt > /root/updatefile1.txt
count=1
for i in `ls /home`
do
    f=$(sed -n "$count p" /root/updatefile1.txt)
    if [ /home/$i != /home/$f ] 
    then
    mv /home/$i /home/$f
    fi
    count=$(($count+1))
done
echo "重命名扩展名成功"
}


  • 写回答

2条回答 默认 最新

  • 工科小石头 2024-07-26 20:58
    关注

    已经找到问题了,上面的if判断中,文件名还未修改,所以/home/$f是不存在的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月26日
  • 已采纳回答 7月26日
  • 创建了问题 7月26日