我试图在多个文件夹中运行script
,这些文件夹调用:一个软件,两个输入文件,它们自动创建一个文件夹作为输出(在输入的文件夹中),例如:
./soft -in1 input1 -in2 input2
此外,我有多个文件夹,如下所示:
├── Folder1
│ ├── input1.in1
│ ├── input1.in2
│ ├── soft.py
├── Folder2
│ ├── input2.in1
│ ├── input2.in2
│ ├── soft.py
├── script.sh
所以,我想做两个过程:
第一,递归运行脚本(在所有文件夹中),第二,在每个文件夹中运行脚本的“ X”重复。我让该脚本递归运行。
但是我在尝试重复时遇到问题。我尝试使用seq
命令,但是软件./soft
在每次重复中都重写输出。因此,我需要将输出与每个重复的编号保存在文件夹中(例如\ out_Folder1_rep1; \ out_Folder1_rep2; \ out_Folder1_rep3)。
我需要为每个重复创建输出文件夹吗?有人可以帮我吗?
for dir in */; do
for r in in1; do
glob=*.${r}
"./soft" -in1 "$dir"/$glob -in2 "$dir"/$(basename -s .tpl $glob).in2 ;
done
done
答案 0 :(得分:0)
首先,递归运行脚本(在所有文件夹中),其次,在每个文件夹中运行脚本的“ X”重复。我让该脚本递归运行。
首先,请先读取根文件夹中所有文件夹的列表,然后再“更改目录”到文件夹列表中的每个条目,然后执行脚本,而不是执行递归操作。
请在下面找到示例代码:
#!/bin/sh
if [ ! -z "${1}" ];
then
DIR_LIST=$(ls -d "${1}/*")
for dir in "${DIR_LIST}";
do
cd ${dir}
# run your script here
done
fi