我有一个代码是 svr_vars。我有一个包含 300 个不同文件的目录。我想循环它并在目录中的每个文件上运行代码。 svr_vars 代码输出通用文件名 svr_vars.txt。因此,每次运行代码时,它都会覆盖 svr_vars.txt 文件名。因此,每次运行代码后都需要重命名。
1995051200_72259.txt <= 目录中的一个文件是什么样子
我希望输出从 svr_vars.txt 重命名为 svr.1995051200_72259.txt
答案1
如果我正确理解了这个问题,那么你基本上就是这样做的
svr_vars 1995051200_72259.txt
并且程序生成名为的输出svr_vars.txt
,您希望将其重命名为svr.1995051200_72259.txt
假设所有 300 个文件都以数字开头并以数字结尾,.txt
那么您可以执行类似于以下的循环
#!/bin/bash
for file in [1-9]*.txt
do
svr_vars "$file"
mv svr_vars.txt "svr.$file"
done
我们可以向此循环添加一些健全性检查,以使其在无法正常工作时中止。例如
#!/bin/bash
for file in [1-9]*.txt
do
if [ -e "svr.$file" ]
then
echo "$file already processed. skipping"
else
svr_vars "$file"
if [ ! -e svr_vars.txt ]
then
echo "Failed to create results for $file"
else
mv svr_vars.txt "svr.$file"
fi
fi
done