linux - 从 bash 脚本文件中查找没有目录和扩展名的文件名

标签 linux bash awk

如上所述,我一直在尝试从 bash 脚本文件中获取不带目录和扩展名的文件名。我希望输出显示为 -> filename : value of sum/count 。我尝试使用 basename但它不起作用。

FILE=$(find "$@" -type f -name "*.dat")
for contents in $FILE; do 
    awk -F "<Overall>" 'NF>=2 {count=count+1;sum=sum+$2; }
                        END {printf("%s:%4.1f\n",gensub(".dat","","g",FILENAME),sum/count);}' $contents
done| sort -k2rn

代码运行时的输出,给定一个包含我需要检查的所有文件的目录,作为参数是:

this is the output

我将 gensub 部分更改为 basename $contents 但它仍然不起作用。希望有人能提供帮助。非常感谢!

最佳答案

您正在删除扩展名,但没有删除目录前缀。尝试:

END {printf("%s:%4.1f\n", gensub(/.*\/(.*)\.dat$/, "\1", "g"), FILENAME), sum/count);}

\1 获取正则表达式中与 (.*) 匹配的部分,即最后一个 / 之间的所有内容.dat.

关于linux - 从 bash 脚本文件中查找没有目录和扩展名的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612721/

相关文章:

python - 将多个 fasta 文件拆分为具有相同编号的文件

linux - Gitlab rake 备份时间戳到别的东西

bash - grep 在一个文件上并对多个输出文件进行排序匹配

linux - 使用 sudo 运行命令

linux - -bash : syntax error near unexpected token `done' in script

bash - 从 bash 循环中收集唯一数据项的数组——readarray 不追加?

linux - 如何分别在linux终端中获取程序的执行时间

awk - 匹配文件中的字符串并仅打印匹配的第一行

使用 PTRACE_SINGLESTEP 计算进程的机器指令

linux - 将shell中的连续数字分组