我在 bash 中有一个脚本,可以将 csv 文件从 2 个不同的目录传输到 python 程序,如下所示:
#!/bin/bash
DIR1=/a/directory
DIR2=/another/directory
for f in DIR1
do
/direc/to/python3.7 /dir/scriptspython/.py $DIR1/$f
done
for n in DIR2
do
/direc/to/python3.7 /dir/scriptspython/.py $DIR2/$f
done
问题是我希望目录中的文件一个接一个地加载,如下所示:$DIR1/$f(1) then $DIR2/$n(1)...$DIR1/$f(x) then DIR2/$n(x)
我的问题看起来与此类似线但用目录而不是文件
答案1
所以,我假设你有这样的文件
aa/apple aa/orange aa/perry bb/apple bb/orange bb/perry
我们可以使用aa/*
和bb/*
列出两个目录中的文件,然后将它们保存在两个数组中,并循环这些数组:
#!/bin/bash
files1=(aa/*)
files2=(bb/*)
for (( i=0; i < ${#files1[@]}; i++)); do
echo "${files1[i]}"
echo "${files2[i]}"
done
aa/apple
这将按、bb/apple
、等顺序输出它们。aa/orange
排序顺序是默认的字典排序。上面的代码从第一个列表中获取文件数,因此它基本上假设两个目录中的文件数量相等。
(我不确定如果两个目录中的文件名列表不相等,这有多大意义。)