如何从文件名中读取值并在文件中读取 insert/replace 值?

how to read a value from filename and insert/replace it in the file?

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

我认为下面的 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"[=11=]".py "[=11=]}' | xargs sh

最后你可以使用 python 或 bash 或 ksh 代替 sh。