shell Linux -如何区分目录中所有同名但扩展名不同的文件

bqujaahr  于 2023-10-23  发布在  Shell
关注(0)|答案(2)|浏览(99)

假设在当前目录中有一些文件名为:
test1.out, test2.out, test3.out ...
test1.expect, test.expect, test3.expect ...
我想将每个测试.out与其对应的测试.expect进行比较,例如:

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

我想知道怎样才能更有效率地做到这一点。谢谢你,谢谢!
我对Linux shell不太熟悉。我尝试过这样的事情:
for i in *.out; do diff "$i" "$i.expect"; done
但我意识到这是不正确的,因为$i包括.out扩展。

ycggw6v2

ycggw6v21#

有了Bash,你就有了很多强大的参数扩展变体。例如,在您尝试的这个变体中:

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特性和功能的很好参考。

0yycz8jy

0yycz8jy2#

我会做:

find dir1 -iname "*.out" -exec basename -s .out {} \; | xargs  -I % diff dir1/%.out dir2/%.expect

相关问题