为文本文件的每一行运行命令(Bash)

时间:2015-04-24 00:56:36

标签: bash shell scripting

我正在开发一个执行以下操作的程序:

在文件夹X中读取270文件并调用另一个程序以运行包含该文件内容的命令。例如:

$ cat X/1.txt
AAAA
BBBB
CCCC

该程序应该读取该文本(其中有270个),并且它应该在循环中执行:

$python file.py AAAA; 

然后

python file.py BBBB; 

然后

python file.py CCCC. 

并在下一个文件上移动,如22.txt(文件不是数字,因此计数器不会有太多帮助)。

我尝试了以下内容:

function text(){
for i in $(ls Domains/);
while read line;
do
        $line
        f= done < Domains/$i.txt
        python file.py $f
}

text;

谢谢,伙计们!

2 个答案:

答案 0 :(得分:3)

这就是xargs派上用场的地方:连接所有文件并将其传递到xargs中,xargs逐行将每行传递给python程序。

cat * | xargs -L1 python file.py

答案 1 :(得分:0)

这应该有效:

function text(){
for i in $(ls Domains/)
do
while read line;
do
python file.py $line
done < Domains/$i.txt   
done     
}