我有一堆文件和我在其上运行的脚本。该脚本将2个文件作为输入,所有文件都采用以下格式:a.txt1 a.txt2
现在我使用的脚本是这样的:foo.sh a.txt1 a.txt2
我必须在250对上运行此脚本(例如a1.txt1 a1.txt2到a250.txt1 a250.txt2) 我是通过输入文件名手动完成的。我想知道有没有办法自动化这个过程。所有这些对都在同一个文件夹中,有没有办法在所有对上循环该过程?
我希望我说清楚。
谢谢。
具体来说,这些是一些示例文件名:
答案 0 :(得分:2)
假设所有文件都是成对的(即<something>.txt1
和<something>.txt2
,那么您可以执行以下操作:
1. #!/bin/bash
2.
3. for txt1 in *.txt1; do
4. txt2="${txt1%1}2"
5. # work on $txt1 and $txt2
6. done
在第3行中,我们使用shell glob来获取以.txt1
结尾的所有文件。第4行,我们使用替换删除最终1
并将其替换为2
。实际工作在第5行完成。
答案 1 :(得分:0)
#FOR当前目录中的每个文件除了.txt2的文件 *
for ls | sort | grep -v .txt2
做
*#THE FIRST .txt1 file is $i*
first="$i"
*#THE SECOND IS THE SAME EXCEPT WITH .txt2 SO WE REPLACE THE STRING*
second=`echo "$i" | sed 's/.txt1/.txt2/g'`
#WE MAKE THE ASSUMPTION FOO.SH WILL ERROR OUT IF NOT PASSED TWO PARAMETERS
if !(bash foo.sh $first $second); then
{
echo "Problem running against $first $second"
}
else
{
echo "Ran against $first $second"
}
fi
done