我必须运行许多python脚本,它们只有一个参数不同。我将它们命名为runv1.py,runv2.py,runv20.py。我有原始脚本,比如runv1.py。然后我通过
制作我需要的所有副本cat runv1.py | tee runv{2..20..1}.py
所以我有runv1.py,..,runv20.py。但是在所有这些参数中仍然是参数v = 1。
问:我怎样才能替换v参数从文件名中读取它?例如在runv4.py然后v = 4。我想知道是否有任何单行shell命令或命令组合。谢谢!
PS:当文件太多时,直接编辑每个文件不是一个合适的解决方案。
答案 0 :(得分:0)
以下for循环将满足您的目的我认为
for i in `ls | grep "runv[0-9][0-9]*.py"`
do
l=`echo $i | tr -d [a-z.]`
sed -i 's/v/'"$l"'/g' runv$l.py
done
下面的命令是将参数传递给从文件名本身提取的脚本
ls | grep "runv[0-9][0-9]*.py" | tr -d [a-z.] | awk '{print "./runv"$0".py "$0}' | xargs sh
最后而不是sh你可以使用python或bash或ksh。