如何循环遍历目录中的文件夹并将输入放入列表中然后打印

如何循环遍历目录中的文件夹并将输入放入列表中然后打印

我有从 3 到 8 的目录。每个目录中都有一个名为 OUTCAR 的文件。我需要从此文件中 grep 一个数字,如下所示:

grep Elapsed OUTCAR|egrep -o "[0-9]+\.[0-9]+"

有问题的行看起来像这样:

Elapsed time (sec): 45123.137

所以,最后我想打印两列作为目录名称并egrep输出如下:

3 80650.077
..
8 42757.057

例如当我进入文件夹 3 时,grep Elapsed OUTCAR|egrep -o "[0-9]+\.[0-9]+"我得到了80650.077 “非常感谢您的帮助!”

答案1

使用grepsed

grep -oP 'Elapsed time \(sec\):\K.*' {3..8}/OUTCAR | sed 's_/OUTCAR:__'

这使用括号扩展{3..8}/OUTCAR来构造该过程的参数列表grep

3/OUTCAR 4/OUTCAR 5/OUTCAR …

grep在这些文件中搜索匹配的行,并仅输出冒号后的相对文件路径和名称的部分。sed从每一行中删除不需要的文件名部分,只留下目录名称和匹配项(其中已经包含空格)。

相关内容