如何从文件名中读取值并在文件中插入/替换它?

时间:2015-07-20 09:31:59

标签: shell cat tee

我必须运行许多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:当文件太多时,直接编辑每个文件不是一个合适的解决方案。

1 个答案:

答案 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。