制作bash脚本以使用提供的扩展名替换多个文件中的字符串

时间:2019-03-18 22:15:20

标签: bash unix

我知道已经被问过很多次了,但是由于某种原因,我的脚本无法正常工作。当我提供文件名

时,它将起作用
3)
    echo "provide a string to find"
    read stringA
    echo "provide a string to write"
    read stringB
    echo
sed -i -e 's/'"$stringA"'/'"$stringB"'/g' ~/Desktop/skrypcik/*.$ext
;;
esac 

$ ext是作为扩展名提供的。当我用文件名更改*并将$ ext保留在那里时,它将起作用。

例如,我有两个名为aaa.txt和bbb.txt的.txt文件,运行此脚本将使它们保持不变,但是当我将路径更改为〜/ Desktop / skrypcik / aaa。$ ext时,将$ ext设置为txt,它将起作用并正确更改aaa.txt。

抱歉,我只是在学习bash,并且看到“ sed”与“ sed -i's / foo / bar / g'*”一起使用非常有效。我怎么了?

谢谢

编辑:好吧,显然,在将其更改为正确的文件后,我对该文件缺少权限。

调整后,现在一切都很好,谢谢。

3)
echo "provide a string to find"
read stringA
echo "provide a string to replace"
read stringB
echo
sed -i '.backup' 's/'"$stringA"'/'"$stringB"'/g' ./*.$ext
echo "backups were created"
        for x in ./*.$ext.backup; do
        echo $x
done
;;
esac

0 个答案:

没有答案