假设在当前目录中有一些文件名为:

test1.out, test2.out, test3.out ...

test1.expect, test.expect, test3.expect ...

我想将每个测试.out与其对应的测试.expect进行比较,例如:

diff test1.out test1.expect
diff test2.out test2.expect

诸若此类.我想知道我如何才能更有效地实现这一点.谢谢!

我对Linuxshell 不是很熟悉.我try 过这样的事情:

for i in *.out; do diff "$i" "$i.expect"; done

但我意识到这是不正确的,因为$i包括.out扩展名.

推荐答案

使用Bash,您可以在参数扩展方面有很多强大的变化.例如,在您try 的此变体中:

for i in *.out; do diff "$i" "${i/%out/expect}"; done

"${i/%out/expect}"扩展为shell变量i的值,尾部的out(如果有的话)被expect替换.

The bash man pagethe bash manual都是bash特性和功能的很好参考.

Linux相关问答推荐

创建守护进程时打开0,1,2描述符

通过ssh传输参数时避免字符串拆分

Ansible-删除两个注释之间的代码块(包括注释本身)

std::chrono::time_zone 在不同操作系统上不可用

如何在 ERE 中结束这个正则表达式

无法在嵌入式 Linux 中使用 libjpeg 以 RGB888 在 LCD(黑色)上显示 JPEG

将 Visual Studio C++ 项目迁移到 Linux 和 CMake

我需要制作一个 awk 脚本来解析文件中的文本.我不确定我是否做得正确

如何在 Linux 上使用 -grep 构建过滤间隔的命令

sed 根据文件中的条件进行多次替换

你如何在 CentOS9 上使用 C++ fmt?

如何在 Linux 中命名线程?

在 C 中设置环境变量

我想为 Linux 内核做贡献

如何仅打印 hexdump 中的十六进制值,而不打印行号或 ASCII 表?

可以通过 SSH 连接的所有用户的列表

将 jiffies 转换为毫秒

如何从目录复制内容而不是符号链接?

在 reverse-i-search (Ctrl+R ) , 历史上类似命令之间切换的任何方法

ImportError:在 ubuntu 14.04 中没有名为 _io 的模块