循环遍历目录bash中的所有文件

时间:2016-12-09 13:31:18

标签: bash file loops directory

我知道之前已经问过这个问题。但是,这些例子似乎都不适合我。因此: 我有所有类型的文件     XXXX1.txt     XXXX2.txt     XXXX3.txt     ...     XXXX9.txt在同一目录中。

现在我想使用bash从每个文件中获取某个值:

for file in *$i.txt
do
   for ((i = 1; i < 10; i++))
   do
   grep "energy" *.txt >> energies.txt
   done
done

代码和grep工作正常没有任何错误,但我总是得到第一次迭代的grep,第一次能量打印9次。它从不关注其他人。我知道这种循环在bash中很复杂。但是,请不要建议将所有文件移动到单独的目录中并循环显示它们。

2 个答案:

答案 0 :(得分:1)

您不需要这种复杂(和错误)的嵌套循环。 试试这个命令:

grep -h "energy" *{1..9}.txt >> energies.txt

答案 1 :(得分:0)

如果您只需要文件内容:

grep -h "energy" *[1-9].txt >> energies.txt

如果您需要包含内容的文件名:

grep -H "energy" *[1-9].txt >> energies.txt